#ifndef IDECIDEDTOCONVERTALLTHECHARACTERSINCHARMAPUT8
#define IDECIDEDTOCONVERTALLTHECHARACTERSINCHARMAPUT8

#include <robin_hood.h>
#include <string>
#include "defines.h"

FORCE_INLINE std::string codePointToUTF8(const int codePoint) {
    std::string result;
    if (codePoint < 0x80) {
        result.push_back(static_cast<char>(codePoint));
    } else if (codePoint < 0x800) {
        result.push_back(static_cast<char>(0xC0 | (codePoint >> 6)));
        result.push_back(static_cast<char>(0x80 | (codePoint & 0x3F)));
    } else if (codePoint < 0x10000) {
        result.push_back(static_cast<char>(0xE0 | (codePoint >> 12)));
        result.push_back(static_cast<char>(0x80 | ((codePoint >> 6) & 0x3F)));
        result.push_back(static_cast<char>(0x80 | (codePoint & 0x3F)));
    } else {
        result.push_back(static_cast<char>(0xF0 | (codePoint >> 18)));
        result.push_back(static_cast<char>(0x80 | ((codePoint >> 12) & 0x3F)));
        result.push_back(static_cast<char>(0x80 | ((codePoint >> 6) & 0x3F)));
        result.push_back(static_cast<char>(0x80 | (codePoint & 0x3F)));
    }
    return result;
}

SELECT_ANY inline robin_hood::unordered_flat_map<int, std::string> accent_mapping;

static robin_hood::unordered_flat_map<int, std::string> initializeCharMap() {
    robin_hood::unordered_flat_map<int, std::string> charMap;
    charMap[0x00c0] = codePointToUTF8(0x0061);
    charMap[0x00c1] = codePointToUTF8(0x0061);
    charMap[0x00c2] = codePointToUTF8(0x0061);
    charMap[0x00c3] = codePointToUTF8(0x0061);
    charMap[0x00c4] = codePointToUTF8(0x0061);
    charMap[0x00c5] = codePointToUTF8(0x0061);
    charMap[0x00c6] = codePointToUTF8(0x00e6);
    charMap[0x00c7] = codePointToUTF8(0x0063);
    charMap[0x00c8] = codePointToUTF8(0x0065);
    charMap[0x00c9] = codePointToUTF8(0x0065);
    charMap[0x00ca] = codePointToUTF8(0x0065);
    charMap[0x00cb] = codePointToUTF8(0x0065);
    charMap[0x00cc] = codePointToUTF8(0x0069);
    charMap[0x00cd] = codePointToUTF8(0x0069);
    charMap[0x00ce] = codePointToUTF8(0x0069);
    charMap[0x00cf] = codePointToUTF8(0x0069);
    charMap[0x00d0] = codePointToUTF8(0x00f0);
    charMap[0x00d1] = codePointToUTF8(0x006e);
    charMap[0x00d2] = codePointToUTF8(0x006f);
    charMap[0x00d3] = codePointToUTF8(0x006f);
    charMap[0x00d4] = codePointToUTF8(0x006f);
    charMap[0x00d5] = codePointToUTF8(0x006f);
    charMap[0x00d6] = codePointToUTF8(0x006f);
    charMap[0x00d8] = codePointToUTF8(0x00f8);
    charMap[0x00d9] = codePointToUTF8(0x0075);
    charMap[0x00da] = codePointToUTF8(0x0075);
    charMap[0x00db] = codePointToUTF8(0x0075);
    charMap[0x00dc] = codePointToUTF8(0x0075);
    charMap[0x00dd] = codePointToUTF8(0x0079);
    charMap[0x00de] = codePointToUTF8(0x00fe);
    charMap[0x00e0] = codePointToUTF8(0x0061);
    charMap[0x00e1] = codePointToUTF8(0x0061);
    charMap[0x00e2] = codePointToUTF8(0x0061);
    charMap[0x00e3] = codePointToUTF8(0x0061);
    charMap[0x00e4] = codePointToUTF8(0x0061);
    charMap[0x00e5] = codePointToUTF8(0x0061);
    charMap[0x00e7] = codePointToUTF8(0x0063);
    charMap[0x00e8] = codePointToUTF8(0x0065);
    charMap[0x00e9] = codePointToUTF8(0x0065);
    charMap[0x00ea] = codePointToUTF8(0x0065);
    charMap[0x00eb] = codePointToUTF8(0x0065);
    charMap[0x00ec] = codePointToUTF8(0x0069);
    charMap[0x00ed] = codePointToUTF8(0x0069);
    charMap[0x00ee] = codePointToUTF8(0x0069);
    charMap[0x00ef] = codePointToUTF8(0x0069);
    charMap[0x00f1] = codePointToUTF8(0x006e);
    charMap[0x00f2] = codePointToUTF8(0x006f);
    charMap[0x00f3] = codePointToUTF8(0x006f);
    charMap[0x00f4] = codePointToUTF8(0x006f);
    charMap[0x00f5] = codePointToUTF8(0x006f);
    charMap[0x00f6] = codePointToUTF8(0x006f);
    charMap[0x00f9] = codePointToUTF8(0x0075);
    charMap[0x00fa] = codePointToUTF8(0x0075);
    charMap[0x00fb] = codePointToUTF8(0x0075);
    charMap[0x00fc] = codePointToUTF8(0x0075);
    charMap[0x00fd] = codePointToUTF8(0x0079);
    charMap[0x00ff] = codePointToUTF8(0x0079);
    charMap[0x0100] = codePointToUTF8(0x0061);
    charMap[0x0101] = codePointToUTF8(0x0061);
    charMap[0x0102] = codePointToUTF8(0x0061);
    charMap[0x0103] = codePointToUTF8(0x0061);
    charMap[0x0104] = codePointToUTF8(0x0061);
    charMap[0x0105] = codePointToUTF8(0x0061);
    charMap[0x0106] = codePointToUTF8(0x0063);
    charMap[0x0107] = codePointToUTF8(0x0063);
    charMap[0x0108] = codePointToUTF8(0x0063);
    charMap[0x0109] = codePointToUTF8(0x0063);
    charMap[0x010a] = codePointToUTF8(0x0063);
    charMap[0x010b] = codePointToUTF8(0x0063);
    charMap[0x010c] = codePointToUTF8(0x0063);
    charMap[0x010d] = codePointToUTF8(0x0063);
    charMap[0x010e] = codePointToUTF8(0x0064);
    charMap[0x010f] = codePointToUTF8(0x0064);
    charMap[0x0110] = codePointToUTF8(0x0111);
    charMap[0x0112] = codePointToUTF8(0x0065);
    charMap[0x0113] = codePointToUTF8(0x0065);
    charMap[0x0114] = codePointToUTF8(0x0065);
    charMap[0x0115] = codePointToUTF8(0x0065);
    charMap[0x0116] = codePointToUTF8(0x0065);
    charMap[0x0117] = codePointToUTF8(0x0065);
    charMap[0x0118] = codePointToUTF8(0x0065);
    charMap[0x0119] = codePointToUTF8(0x0065);
    charMap[0x011a] = codePointToUTF8(0x0065);
    charMap[0x011b] = codePointToUTF8(0x0065);
    charMap[0x011c] = codePointToUTF8(0x0067);
    charMap[0x011d] = codePointToUTF8(0x0067);
    charMap[0x011e] = codePointToUTF8(0x0067);
    charMap[0x011f] = codePointToUTF8(0x0067);
    charMap[0x0120] = codePointToUTF8(0x0067);
    charMap[0x0121] = codePointToUTF8(0x0067);
    charMap[0x0122] = codePointToUTF8(0x0067);
    charMap[0x0123] = codePointToUTF8(0x0067);
    charMap[0x0124] = codePointToUTF8(0x0068);
    charMap[0x0125] = codePointToUTF8(0x0068);
    charMap[0x0126] = codePointToUTF8(0x0127);
    charMap[0x0128] = codePointToUTF8(0x0069);
    charMap[0x0129] = codePointToUTF8(0x0069);
    charMap[0x012a] = codePointToUTF8(0x0069);
    charMap[0x012b] = codePointToUTF8(0x0069);
    charMap[0x012c] = codePointToUTF8(0x0069);
    charMap[0x012d] = codePointToUTF8(0x0069);
    charMap[0x012e] = codePointToUTF8(0x0069);
    charMap[0x012f] = codePointToUTF8(0x0069);
    charMap[0x0130] = codePointToUTF8(0x0069);
    charMap[0x0132] = codePointToUTF8(0x0133);
    charMap[0x0134] = codePointToUTF8(0x006a);
    charMap[0x0135] = codePointToUTF8(0x006a);
    charMap[0x0136] = codePointToUTF8(0x006b);
    charMap[0x0137] = codePointToUTF8(0x006b);
    charMap[0x0139] = codePointToUTF8(0x006c);
    charMap[0x013a] = codePointToUTF8(0x006c);
    charMap[0x013b] = codePointToUTF8(0x006c);
    charMap[0x013c] = codePointToUTF8(0x006c);
    charMap[0x013d] = codePointToUTF8(0x006c);
    charMap[0x013e] = codePointToUTF8(0x006c);
    charMap[0x013f] = codePointToUTF8(0x0140);
    charMap[0x0141] = codePointToUTF8(0x0142);
    charMap[0x0143] = codePointToUTF8(0x006e);
    charMap[0x0144] = codePointToUTF8(0x006e);
    charMap[0x0145] = codePointToUTF8(0x006e);
    charMap[0x0146] = codePointToUTF8(0x006e);
    charMap[0x0147] = codePointToUTF8(0x006e);
    charMap[0x0148] = codePointToUTF8(0x006e);
    charMap[0x014a] = codePointToUTF8(0x014b);
    charMap[0x014c] = codePointToUTF8(0x006f);
    charMap[0x014d] = codePointToUTF8(0x006f);
    charMap[0x014e] = codePointToUTF8(0x006f);
    charMap[0x014f] = codePointToUTF8(0x006f);
    charMap[0x0150] = codePointToUTF8(0x006f);
    charMap[0x0151] = codePointToUTF8(0x006f);
    charMap[0x0152] = codePointToUTF8(0x0153);
    charMap[0x0154] = codePointToUTF8(0x0072);
    charMap[0x0155] = codePointToUTF8(0x0072);
    charMap[0x0156] = codePointToUTF8(0x0072);
    charMap[0x0157] = codePointToUTF8(0x0072);
    charMap[0x0158] = codePointToUTF8(0x0072);
    charMap[0x0159] = codePointToUTF8(0x0072);
    charMap[0x015a] = codePointToUTF8(0x0073);
    charMap[0x015b] = codePointToUTF8(0x0073);
    charMap[0x015c] = codePointToUTF8(0x0073);
    charMap[0x015d] = codePointToUTF8(0x0073);
    charMap[0x015e] = codePointToUTF8(0x0073);
    charMap[0x015f] = codePointToUTF8(0x0073);
    charMap[0x0160] = codePointToUTF8(0x0073);
    charMap[0x0161] = codePointToUTF8(0x0073);
    charMap[0x0162] = codePointToUTF8(0x0074);
    charMap[0x0163] = codePointToUTF8(0x0074);
    charMap[0x0164] = codePointToUTF8(0x0074);
    charMap[0x0165] = codePointToUTF8(0x0074);
    charMap[0x0166] = codePointToUTF8(0x0167);
    charMap[0x0168] = codePointToUTF8(0x0075);
    charMap[0x0169] = codePointToUTF8(0x0075);
    charMap[0x016a] = codePointToUTF8(0x0075);
    charMap[0x016b] = codePointToUTF8(0x0075);
    charMap[0x016c] = codePointToUTF8(0x0075);
    charMap[0x016d] = codePointToUTF8(0x0075);
    charMap[0x016e] = codePointToUTF8(0x0075);
    charMap[0x016f] = codePointToUTF8(0x0075);
    charMap[0x0170] = codePointToUTF8(0x0075);
    charMap[0x0171] = codePointToUTF8(0x0075);
    charMap[0x0172] = codePointToUTF8(0x0075);
    charMap[0x0173] = codePointToUTF8(0x0075);
    charMap[0x0174] = codePointToUTF8(0x0077);
    charMap[0x0175] = codePointToUTF8(0x0077);
    charMap[0x0176] = codePointToUTF8(0x0079);
    charMap[0x0177] = codePointToUTF8(0x0079);
    charMap[0x0178] = codePointToUTF8(0x0079);
    charMap[0x0179] = codePointToUTF8(0x007a);
    charMap[0x017a] = codePointToUTF8(0x007a);
    charMap[0x017b] = codePointToUTF8(0x007a);
    charMap[0x017c] = codePointToUTF8(0x007a);
    charMap[0x017d] = codePointToUTF8(0x007a);
    charMap[0x017e] = codePointToUTF8(0x007a);
    charMap[0x0181] = codePointToUTF8(0x0253);
    charMap[0x0182] = codePointToUTF8(0x0183);
    charMap[0x0184] = codePointToUTF8(0x0185);
    charMap[0x0186] = codePointToUTF8(0x0254);
    charMap[0x0187] = codePointToUTF8(0x0188);
    charMap[0x0189] = codePointToUTF8(0x0256);
    charMap[0x018a] = codePointToUTF8(0x0257);
    charMap[0x018b] = codePointToUTF8(0x018c);
    charMap[0x018e] = codePointToUTF8(0x01dd);
    charMap[0x018f] = codePointToUTF8(0x0259);
    charMap[0x0190] = codePointToUTF8(0x025b);
    charMap[0x0191] = codePointToUTF8(0x0192);
    charMap[0x0193] = codePointToUTF8(0x0260);
    charMap[0x0194] = codePointToUTF8(0x0263);
    charMap[0x0196] = codePointToUTF8(0x0269);
    charMap[0x0197] = codePointToUTF8(0x0268);
    charMap[0x0198] = codePointToUTF8(0x0199);
    charMap[0x019c] = codePointToUTF8(0x026f);
    charMap[0x019d] = codePointToUTF8(0x0272);
    charMap[0x019f] = codePointToUTF8(0x0275);
    charMap[0x01a0] = codePointToUTF8(0x006f);
    charMap[0x01a1] = codePointToUTF8(0x006f);
    charMap[0x01a2] = codePointToUTF8(0x01a3);
    charMap[0x01a4] = codePointToUTF8(0x01a5);
    charMap[0x01a6] = codePointToUTF8(0x0280);
    charMap[0x01a7] = codePointToUTF8(0x01a8);
    charMap[0x01a9] = codePointToUTF8(0x0283);
    charMap[0x01ac] = codePointToUTF8(0x01ad);
    charMap[0x01ae] = codePointToUTF8(0x0288);
    charMap[0x01af] = codePointToUTF8(0x0075);
    charMap[0x01b0] = codePointToUTF8(0x0075);
    charMap[0x01b1] = codePointToUTF8(0x028a);
    charMap[0x01b2] = codePointToUTF8(0x028b);
    charMap[0x01b3] = codePointToUTF8(0x01b4);
    charMap[0x01b5] = codePointToUTF8(0x01b6);
    charMap[0x01b7] = codePointToUTF8(0x0292);
    charMap[0x01b8] = codePointToUTF8(0x01b9);
    charMap[0x01bc] = codePointToUTF8(0x01bd);
    charMap[0x01c4] = codePointToUTF8(0x01c6);
    charMap[0x01c5] = codePointToUTF8(0x01c6);
    charMap[0x01c7] = codePointToUTF8(0x01c9);
    charMap[0x01c8] = codePointToUTF8(0x01c9);
    charMap[0x01ca] = codePointToUTF8(0x01cc);
    charMap[0x01cb] = codePointToUTF8(0x01cc);
    charMap[0x01cd] = codePointToUTF8(0x0061);
    charMap[0x01ce] = codePointToUTF8(0x0061);
    charMap[0x01cf] = codePointToUTF8(0x0069);
    charMap[0x01d0] = codePointToUTF8(0x0069);
    charMap[0x01d1] = codePointToUTF8(0x006f);
    charMap[0x01d2] = codePointToUTF8(0x006f);
    charMap[0x01d3] = codePointToUTF8(0x0075);
    charMap[0x01d4] = codePointToUTF8(0x0075);
    charMap[0x01d5] = codePointToUTF8(0x0075);
    charMap[0x01d6] = codePointToUTF8(0x0075);
    charMap[0x01d7] = codePointToUTF8(0x0075);
    charMap[0x01d8] = codePointToUTF8(0x0075);
    charMap[0x01d9] = codePointToUTF8(0x0075);
    charMap[0x01da] = codePointToUTF8(0x0075);
    charMap[0x01db] = codePointToUTF8(0x0075);
    charMap[0x01dc] = codePointToUTF8(0x0075);
    charMap[0x01de] = codePointToUTF8(0x0061);
    charMap[0x01df] = codePointToUTF8(0x0061);
    charMap[0x01e0] = codePointToUTF8(0x0061);
    charMap[0x01e1] = codePointToUTF8(0x0061);
    charMap[0x01e2] = codePointToUTF8(0x00e6);
    charMap[0x01e3] = codePointToUTF8(0x00e6);
    charMap[0x01e4] = codePointToUTF8(0x01e5);
    charMap[0x01e6] = codePointToUTF8(0x0067);
    charMap[0x01e7] = codePointToUTF8(0x0067);
    charMap[0x01e8] = codePointToUTF8(0x006b);
    charMap[0x01e9] = codePointToUTF8(0x006b);
    charMap[0x01ea] = codePointToUTF8(0x006f);
    charMap[0x01eb] = codePointToUTF8(0x006f);
    charMap[0x01ec] = codePointToUTF8(0x006f);
    charMap[0x01ed] = codePointToUTF8(0x006f);
    charMap[0x01ee] = codePointToUTF8(0x0292);
    charMap[0x01ef] = codePointToUTF8(0x0292);
    charMap[0x01f0] = codePointToUTF8(0x006a);
    charMap[0x01f1] = codePointToUTF8(0x01f3);
    charMap[0x01f2] = codePointToUTF8(0x01f3);
    charMap[0x01f4] = codePointToUTF8(0x0067);
    charMap[0x01f5] = codePointToUTF8(0x0067);
    charMap[0x01f6] = codePointToUTF8(0x0195);
    charMap[0x01f7] = codePointToUTF8(0x01bf);
    charMap[0x01f8] = codePointToUTF8(0x006e);
    charMap[0x01f9] = codePointToUTF8(0x006e);
    charMap[0x01fa] = codePointToUTF8(0x0061);
    charMap[0x01fb] = codePointToUTF8(0x0061);
    charMap[0x01fc] = codePointToUTF8(0x00e6);
    charMap[0x01fd] = codePointToUTF8(0x00e6);
    charMap[0x01fe] = codePointToUTF8(0x00f8);
    charMap[0x01ff] = codePointToUTF8(0x00f8);
    charMap[0x0200] = codePointToUTF8(0x0061);
    charMap[0x0201] = codePointToUTF8(0x0061);
    charMap[0x0202] = codePointToUTF8(0x0061);
    charMap[0x0203] = codePointToUTF8(0x0061);
    charMap[0x0204] = codePointToUTF8(0x0065);
    charMap[0x0205] = codePointToUTF8(0x0065);
    charMap[0x0206] = codePointToUTF8(0x0065);
    charMap[0x0207] = codePointToUTF8(0x0065);
    charMap[0x0208] = codePointToUTF8(0x0069);
    charMap[0x0209] = codePointToUTF8(0x0069);
    charMap[0x020a] = codePointToUTF8(0x0069);
    charMap[0x020b] = codePointToUTF8(0x0069);
    charMap[0x020c] = codePointToUTF8(0x006f);
    charMap[0x020d] = codePointToUTF8(0x006f);
    charMap[0x020e] = codePointToUTF8(0x006f);
    charMap[0x020f] = codePointToUTF8(0x006f);
    charMap[0x0210] = codePointToUTF8(0x0072);
    charMap[0x0211] = codePointToUTF8(0x0072);
    charMap[0x0212] = codePointToUTF8(0x0072);
    charMap[0x0213] = codePointToUTF8(0x0072);
    charMap[0x0214] = codePointToUTF8(0x0075);
    charMap[0x0215] = codePointToUTF8(0x0075);
    charMap[0x0216] = codePointToUTF8(0x0075);
    charMap[0x0217] = codePointToUTF8(0x0075);
    charMap[0x0218] = codePointToUTF8(0x0073);
    charMap[0x0219] = codePointToUTF8(0x0073);
    charMap[0x021a] = codePointToUTF8(0x0074);
    charMap[0x021b] = codePointToUTF8(0x0074);
    charMap[0x021c] = codePointToUTF8(0x021d);
    charMap[0x021e] = codePointToUTF8(0x0068);
    charMap[0x021f] = codePointToUTF8(0x0068);
    charMap[0x0220] = codePointToUTF8(0x019e);
    charMap[0x0222] = codePointToUTF8(0x0223);
    charMap[0x0224] = codePointToUTF8(0x0225);
    charMap[0x0226] = codePointToUTF8(0x0061);
    charMap[0x0227] = codePointToUTF8(0x0061);
    charMap[0x0228] = codePointToUTF8(0x0065);
    charMap[0x0229] = codePointToUTF8(0x0065);
    charMap[0x022a] = codePointToUTF8(0x006f);
    charMap[0x022b] = codePointToUTF8(0x006f);
    charMap[0x022c] = codePointToUTF8(0x006f);
    charMap[0x022d] = codePointToUTF8(0x006f);
    charMap[0x022e] = codePointToUTF8(0x006f);
    charMap[0x022f] = codePointToUTF8(0x006f);
    charMap[0x0230] = codePointToUTF8(0x006f);
    charMap[0x0231] = codePointToUTF8(0x006f);
    charMap[0x0232] = codePointToUTF8(0x0079);
    charMap[0x0233] = codePointToUTF8(0x0079);
    charMap[0x023a] = codePointToUTF8(0x2c65);
    charMap[0x023b] = codePointToUTF8(0x023c);
    charMap[0x023d] = codePointToUTF8(0x019a);
    charMap[0x023e] = codePointToUTF8(0x2c66);
    charMap[0x0241] = codePointToUTF8(0x0242);
    charMap[0x0243] = codePointToUTF8(0x0180);
    charMap[0x0244] = codePointToUTF8(0x0289);
    charMap[0x0245] = codePointToUTF8(0x028c);
    charMap[0x0246] = codePointToUTF8(0x0247);
    charMap[0x0248] = codePointToUTF8(0x0249);
    charMap[0x024a] = codePointToUTF8(0x024b);
    charMap[0x024c] = codePointToUTF8(0x024d);
    charMap[0x024e] = codePointToUTF8(0x024f);
    charMap[0x0370] = codePointToUTF8(0x0371);
    charMap[0x0372] = codePointToUTF8(0x0373);
    charMap[0x0376] = codePointToUTF8(0x0377);
    charMap[0x037f] = codePointToUTF8(0x03f3);
    charMap[0x0385] = codePointToUTF8(0x00a8);
    charMap[0x0386] = codePointToUTF8(0x03b1);
    charMap[0x0388] = codePointToUTF8(0x03b5);
    charMap[0x0389] = codePointToUTF8(0x03b7);
    charMap[0x038a] = codePointToUTF8(0x03b9);
    charMap[0x038c] = codePointToUTF8(0x03bf);
    charMap[0x038e] = codePointToUTF8(0x03c5);
    charMap[0x038f] = codePointToUTF8(0x03c9);
    charMap[0x0390] = codePointToUTF8(0x03b9);
    charMap[0x0391] = codePointToUTF8(0x03b1);
    charMap[0x0392] = codePointToUTF8(0x03b2);
    charMap[0x0393] = codePointToUTF8(0x03b3);
    charMap[0x0394] = codePointToUTF8(0x03b4);
    charMap[0x0395] = codePointToUTF8(0x03b5);
    charMap[0x0396] = codePointToUTF8(0x03b6);
    charMap[0x0397] = codePointToUTF8(0x03b7);
    charMap[0x0398] = codePointToUTF8(0x03b8);
    charMap[0x0399] = codePointToUTF8(0x03b9);
    charMap[0x039a] = codePointToUTF8(0x03ba);
    charMap[0x039b] = codePointToUTF8(0x03bb);
    charMap[0x039c] = codePointToUTF8(0x03bc);
    charMap[0x039d] = codePointToUTF8(0x03bd);
    charMap[0x039e] = codePointToUTF8(0x03be);
    charMap[0x039f] = codePointToUTF8(0x03bf);
    charMap[0x03a0] = codePointToUTF8(0x03c0);
    charMap[0x03a1] = codePointToUTF8(0x03c1);
    charMap[0x03a3] = codePointToUTF8(0x03c3);
    charMap[0x03a4] = codePointToUTF8(0x03c4);
    charMap[0x03a5] = codePointToUTF8(0x03c5);
    charMap[0x03a6] = codePointToUTF8(0x03c6);
    charMap[0x03a7] = codePointToUTF8(0x03c7);
    charMap[0x03a8] = codePointToUTF8(0x03c8);
    charMap[0x03a9] = codePointToUTF8(0x03c9);
    charMap[0x03aa] = codePointToUTF8(0x03b9);
    charMap[0x03ab] = codePointToUTF8(0x03c5);
    charMap[0x03ac] = codePointToUTF8(0x03b1);
    charMap[0x03ad] = codePointToUTF8(0x03b5);
    charMap[0x03ae] = codePointToUTF8(0x03b7);
    charMap[0x03af] = codePointToUTF8(0x03b9);
    charMap[0x03b0] = codePointToUTF8(0x03c5);
    charMap[0x03ca] = codePointToUTF8(0x03b9);
    charMap[0x03cb] = codePointToUTF8(0x03c5);
    charMap[0x03cc] = codePointToUTF8(0x03bf);
    charMap[0x03cd] = codePointToUTF8(0x03c5);
    charMap[0x03ce] = codePointToUTF8(0x03c9);
    charMap[0x03cf] = codePointToUTF8(0x03d7);
    charMap[0x03d3] = codePointToUTF8(0x03d2);
    charMap[0x03d4] = codePointToUTF8(0x03d2);
    charMap[0x03d8] = codePointToUTF8(0x03d9);
    charMap[0x03da] = codePointToUTF8(0x03db);
    charMap[0x03dc] = codePointToUTF8(0x03dd);
    charMap[0x03de] = codePointToUTF8(0x03df);
    charMap[0x03e0] = codePointToUTF8(0x03e1);
    charMap[0x03e2] = codePointToUTF8(0x03e3);
    charMap[0x03e4] = codePointToUTF8(0x03e5);
    charMap[0x03e6] = codePointToUTF8(0x03e7);
    charMap[0x03e8] = codePointToUTF8(0x03e9);
    charMap[0x03ea] = codePointToUTF8(0x03eb);
    charMap[0x03ec] = codePointToUTF8(0x03ed);
    charMap[0x03ee] = codePointToUTF8(0x03ef);
    charMap[0x03f4] = codePointToUTF8(0x03b8);
    charMap[0x03f7] = codePointToUTF8(0x03f8);
    charMap[0x03f9] = codePointToUTF8(0x03f2);
    charMap[0x03fa] = codePointToUTF8(0x03fb);
    charMap[0x03fd] = codePointToUTF8(0x037b);
    charMap[0x03fe] = codePointToUTF8(0x037c);
    charMap[0x03ff] = codePointToUTF8(0x037d);
    charMap[0x0400] = codePointToUTF8(0x0435);
    charMap[0x0401] = codePointToUTF8(0x0435);
    charMap[0x0402] = codePointToUTF8(0x0452);
    charMap[0x0403] = codePointToUTF8(0x0433);
    charMap[0x0404] = codePointToUTF8(0x0454);
    charMap[0x0405] = codePointToUTF8(0x0455);
    charMap[0x0406] = codePointToUTF8(0x0456);
    charMap[0x0407] = codePointToUTF8(0x0456);
    charMap[0x0408] = codePointToUTF8(0x0458);
    charMap[0x0409] = codePointToUTF8(0x0459);
    charMap[0x040a] = codePointToUTF8(0x045a);
    charMap[0x040b] = codePointToUTF8(0x045b);
    charMap[0x040c] = codePointToUTF8(0x043a);
    charMap[0x040d] = codePointToUTF8(0x0438);
    charMap[0x040e] = codePointToUTF8(0x0443);
    charMap[0x040f] = codePointToUTF8(0x045f);
    charMap[0x0410] = codePointToUTF8(0x0430);
    charMap[0x0411] = codePointToUTF8(0x0431);
    charMap[0x0412] = codePointToUTF8(0x0432);
    charMap[0x0413] = codePointToUTF8(0x0433);
    charMap[0x0414] = codePointToUTF8(0x0434);
    charMap[0x0415] = codePointToUTF8(0x0435);
    charMap[0x0416] = codePointToUTF8(0x0436);
    charMap[0x0417] = codePointToUTF8(0x0437);
    charMap[0x0418] = codePointToUTF8(0x0438);
    charMap[0x0419] = codePointToUTF8(0x0438);
    charMap[0x041a] = codePointToUTF8(0x043a);
    charMap[0x041b] = codePointToUTF8(0x043b);
    charMap[0x041c] = codePointToUTF8(0x043c);
    charMap[0x041d] = codePointToUTF8(0x043d);
    charMap[0x041e] = codePointToUTF8(0x043e);
    charMap[0x041f] = codePointToUTF8(0x043f);
    charMap[0x0420] = codePointToUTF8(0x0440);
    charMap[0x0421] = codePointToUTF8(0x0441);
    charMap[0x0422] = codePointToUTF8(0x0442);
    charMap[0x0423] = codePointToUTF8(0x0443);
    charMap[0x0424] = codePointToUTF8(0x0444);
    charMap[0x0425] = codePointToUTF8(0x0445);
    charMap[0x0426] = codePointToUTF8(0x0446);
    charMap[0x0427] = codePointToUTF8(0x0447);
    charMap[0x0428] = codePointToUTF8(0x0448);
    charMap[0x0429] = codePointToUTF8(0x0449);
    charMap[0x042a] = codePointToUTF8(0x044a);
    charMap[0x042b] = codePointToUTF8(0x044b);
    charMap[0x042c] = codePointToUTF8(0x044c);
    charMap[0x042d] = codePointToUTF8(0x044d);
    charMap[0x042e] = codePointToUTF8(0x044e);
    charMap[0x042f] = codePointToUTF8(0x044f);
    charMap[0x0439] = codePointToUTF8(0x0438);
    charMap[0x0450] = codePointToUTF8(0x0435);
    charMap[0x0451] = codePointToUTF8(0x0435);
    charMap[0x0453] = codePointToUTF8(0x0433);
    charMap[0x0457] = codePointToUTF8(0x0456);
    charMap[0x045c] = codePointToUTF8(0x043a);
    charMap[0x045d] = codePointToUTF8(0x0438);
    charMap[0x045e] = codePointToUTF8(0x0443);
    charMap[0x0460] = codePointToUTF8(0x0461);
    charMap[0x0462] = codePointToUTF8(0x0463);
    charMap[0x0464] = codePointToUTF8(0x0465);
    charMap[0x0466] = codePointToUTF8(0x0467);
    charMap[0x0468] = codePointToUTF8(0x0469);
    charMap[0x046a] = codePointToUTF8(0x046b);
    charMap[0x046c] = codePointToUTF8(0x046d);
    charMap[0x046e] = codePointToUTF8(0x046f);
    charMap[0x0470] = codePointToUTF8(0x0471);
    charMap[0x0472] = codePointToUTF8(0x0473);
    charMap[0x0474] = codePointToUTF8(0x0475);
    charMap[0x0476] = codePointToUTF8(0x0475);
    charMap[0x0477] = codePointToUTF8(0x0475);
    charMap[0x0478] = codePointToUTF8(0x0479);
    charMap[0x047a] = codePointToUTF8(0x047b);
    charMap[0x047c] = codePointToUTF8(0x047d);
    charMap[0x047e] = codePointToUTF8(0x047f);
    charMap[0x0480] = codePointToUTF8(0x0481);
    charMap[0x048a] = codePointToUTF8(0x048b);
    charMap[0x048c] = codePointToUTF8(0x048d);
    charMap[0x048e] = codePointToUTF8(0x048f);
    charMap[0x0490] = codePointToUTF8(0x0491);
    charMap[0x0492] = codePointToUTF8(0x0493);
    charMap[0x0494] = codePointToUTF8(0x0495);
    charMap[0x0496] = codePointToUTF8(0x0497);
    charMap[0x0498] = codePointToUTF8(0x0499);
    charMap[0x049a] = codePointToUTF8(0x049b);
    charMap[0x049c] = codePointToUTF8(0x049d);
    charMap[0x049e] = codePointToUTF8(0x049f);
    charMap[0x04a0] = codePointToUTF8(0x04a1);
    charMap[0x04a2] = codePointToUTF8(0x04a3);
    charMap[0x04a4] = codePointToUTF8(0x04a5);
    charMap[0x04a6] = codePointToUTF8(0x04a7);
    charMap[0x04a8] = codePointToUTF8(0x04a9);
    charMap[0x04aa] = codePointToUTF8(0x04ab);
    charMap[0x04ac] = codePointToUTF8(0x04ad);
    charMap[0x04ae] = codePointToUTF8(0x04af);
    charMap[0x04b0] = codePointToUTF8(0x04b1);
    charMap[0x04b2] = codePointToUTF8(0x04b3);
    charMap[0x04b4] = codePointToUTF8(0x04b5);
    charMap[0x04b6] = codePointToUTF8(0x04b7);
    charMap[0x04b8] = codePointToUTF8(0x04b9);
    charMap[0x04ba] = codePointToUTF8(0x04bb);
    charMap[0x04bc] = codePointToUTF8(0x04bd);
    charMap[0x04be] = codePointToUTF8(0x04bf);
    charMap[0x04c0] = codePointToUTF8(0x04cf);
    charMap[0x04c1] = codePointToUTF8(0x0436);
    charMap[0x04c2] = codePointToUTF8(0x0436);
    charMap[0x04c3] = codePointToUTF8(0x04c4);
    charMap[0x04c5] = codePointToUTF8(0x04c6);
    charMap[0x04c7] = codePointToUTF8(0x04c8);
    charMap[0x04c9] = codePointToUTF8(0x04ca);
    charMap[0x04cb] = codePointToUTF8(0x04cc);
    charMap[0x04cd] = codePointToUTF8(0x04ce);
    charMap[0x04d0] = codePointToUTF8(0x0430);
    charMap[0x04d1] = codePointToUTF8(0x0430);
    charMap[0x04d2] = codePointToUTF8(0x0430);
    charMap[0x04d3] = codePointToUTF8(0x0430);
    charMap[0x04d4] = codePointToUTF8(0x04d5);
    charMap[0x04d6] = codePointToUTF8(0x0435);
    charMap[0x04d7] = codePointToUTF8(0x0435);
    charMap[0x04d8] = codePointToUTF8(0x04d9);
    charMap[0x04da] = codePointToUTF8(0x04d9);
    charMap[0x04db] = codePointToUTF8(0x04d9);
    charMap[0x04dc] = codePointToUTF8(0x0436);
    charMap[0x04dd] = codePointToUTF8(0x0436);
    charMap[0x04de] = codePointToUTF8(0x0437);
    charMap[0x04df] = codePointToUTF8(0x0437);
    charMap[0x04e0] = codePointToUTF8(0x04e1);
    charMap[0x04e2] = codePointToUTF8(0x0438);
    charMap[0x04e3] = codePointToUTF8(0x0438);
    charMap[0x04e4] = codePointToUTF8(0x0438);
    charMap[0x04e5] = codePointToUTF8(0x0438);
    charMap[0x04e6] = codePointToUTF8(0x043e);
    charMap[0x04e7] = codePointToUTF8(0x043e);
    charMap[0x04e8] = codePointToUTF8(0x04e9);
    charMap[0x04ea] = codePointToUTF8(0x04e9);
    charMap[0x04eb] = codePointToUTF8(0x04e9);
    charMap[0x04ec] = codePointToUTF8(0x044d);
    charMap[0x04ed] = codePointToUTF8(0x044d);
    charMap[0x04ee] = codePointToUTF8(0x0443);
    charMap[0x04ef] = codePointToUTF8(0x0443);
    charMap[0x04f0] = codePointToUTF8(0x0443);
    charMap[0x04f1] = codePointToUTF8(0x0443);
    charMap[0x04f2] = codePointToUTF8(0x0443);
    charMap[0x04f3] = codePointToUTF8(0x0443);
    charMap[0x04f4] = codePointToUTF8(0x0447);
    charMap[0x04f5] = codePointToUTF8(0x0447);
    charMap[0x04f6] = codePointToUTF8(0x04f7);
    charMap[0x04f8] = codePointToUTF8(0x044b);
    charMap[0x04f9] = codePointToUTF8(0x044b);
    charMap[0x04fa] = codePointToUTF8(0x04fb);
    charMap[0x04fc] = codePointToUTF8(0x04fd);
    charMap[0x04fe] = codePointToUTF8(0x04ff);
    charMap[0x0500] = codePointToUTF8(0x0501);
    charMap[0x0502] = codePointToUTF8(0x0503);
    charMap[0x0504] = codePointToUTF8(0x0505);
    charMap[0x0506] = codePointToUTF8(0x0507);
    charMap[0x0508] = codePointToUTF8(0x0509);
    charMap[0x050a] = codePointToUTF8(0x050b);
    charMap[0x050c] = codePointToUTF8(0x050d);
    charMap[0x050e] = codePointToUTF8(0x050f);
    charMap[0x0510] = codePointToUTF8(0x0511);
    charMap[0x0512] = codePointToUTF8(0x0513);
    charMap[0x0514] = codePointToUTF8(0x0515);
    charMap[0x0516] = codePointToUTF8(0x0517);
    charMap[0x0518] = codePointToUTF8(0x0519);
    charMap[0x051a] = codePointToUTF8(0x051b);
    charMap[0x051c] = codePointToUTF8(0x051d);
    charMap[0x051e] = codePointToUTF8(0x051f);
    charMap[0x0520] = codePointToUTF8(0x0521);
    charMap[0x0522] = codePointToUTF8(0x0523);
    charMap[0x0524] = codePointToUTF8(0x0525);
    charMap[0x0526] = codePointToUTF8(0x0527);
    charMap[0x0528] = codePointToUTF8(0x0529);
    charMap[0x052a] = codePointToUTF8(0x052b);
    charMap[0x052c] = codePointToUTF8(0x052d);
    charMap[0x052e] = codePointToUTF8(0x052f);
    charMap[0x0531] = codePointToUTF8(0x0561);
    charMap[0x0532] = codePointToUTF8(0x0562);
    charMap[0x0533] = codePointToUTF8(0x0563);
    charMap[0x0534] = codePointToUTF8(0x0564);
    charMap[0x0535] = codePointToUTF8(0x0565);
    charMap[0x0536] = codePointToUTF8(0x0566);
    charMap[0x0537] = codePointToUTF8(0x0567);
    charMap[0x0538] = codePointToUTF8(0x0568);
    charMap[0x0539] = codePointToUTF8(0x0569);
    charMap[0x053a] = codePointToUTF8(0x056a);
    charMap[0x053b] = codePointToUTF8(0x056b);
    charMap[0x053c] = codePointToUTF8(0x056c);
    charMap[0x053d] = codePointToUTF8(0x056d);
    charMap[0x053e] = codePointToUTF8(0x056e);
    charMap[0x053f] = codePointToUTF8(0x056f);
    charMap[0x0540] = codePointToUTF8(0x0570);
    charMap[0x0541] = codePointToUTF8(0x0571);
    charMap[0x0542] = codePointToUTF8(0x0572);
    charMap[0x0543] = codePointToUTF8(0x0573);
    charMap[0x0544] = codePointToUTF8(0x0574);
    charMap[0x0545] = codePointToUTF8(0x0575);
    charMap[0x0546] = codePointToUTF8(0x0576);
    charMap[0x0547] = codePointToUTF8(0x0577);
    charMap[0x0548] = codePointToUTF8(0x0578);
    charMap[0x0549] = codePointToUTF8(0x0579);
    charMap[0x054a] = codePointToUTF8(0x057a);
    charMap[0x054b] = codePointToUTF8(0x057b);
    charMap[0x054c] = codePointToUTF8(0x057c);
    charMap[0x054d] = codePointToUTF8(0x057d);
    charMap[0x054e] = codePointToUTF8(0x057e);
    charMap[0x054f] = codePointToUTF8(0x057f);
    charMap[0x0550] = codePointToUTF8(0x0580);
    charMap[0x0551] = codePointToUTF8(0x0581);
    charMap[0x0552] = codePointToUTF8(0x0582);
    charMap[0x0553] = codePointToUTF8(0x0583);
    charMap[0x0554] = codePointToUTF8(0x0584);
    charMap[0x0555] = codePointToUTF8(0x0585);
    charMap[0x0556] = codePointToUTF8(0x0586);
    charMap[0x0622] = codePointToUTF8(0x0627);
    charMap[0x0623] = codePointToUTF8(0x0627);
    charMap[0x0624] = codePointToUTF8(0x0648);
    charMap[0x0625] = codePointToUTF8(0x0627);
    charMap[0x0626] = codePointToUTF8(0x064a);
    charMap[0x06c0] = codePointToUTF8(0x06d5);
    charMap[0x06c2] = codePointToUTF8(0x06c1);
    charMap[0x06d3] = codePointToUTF8(0x06d2);
    charMap[0x0929] = codePointToUTF8(0x0928);
    charMap[0x0931] = codePointToUTF8(0x0930);
    charMap[0x0934] = codePointToUTF8(0x0933);
    charMap[0x0958] = codePointToUTF8(0x0915);
    charMap[0x0959] = codePointToUTF8(0x0916);
    charMap[0x095a] = codePointToUTF8(0x0917);
    charMap[0x095b] = codePointToUTF8(0x091c);
    charMap[0x095c] = codePointToUTF8(0x0921);
    charMap[0x095d] = codePointToUTF8(0x0922);
    charMap[0x095e] = codePointToUTF8(0x092b);
    charMap[0x095f] = codePointToUTF8(0x092f);
    charMap[0x09dc] = codePointToUTF8(0x09a1);
    charMap[0x09dd] = codePointToUTF8(0x09a2);
    charMap[0x09df] = codePointToUTF8(0x09af);
    charMap[0x0a33] = codePointToUTF8(0x0a32);
    charMap[0x0a36] = codePointToUTF8(0x0a38);
    charMap[0x0a59] = codePointToUTF8(0x0a16);
    charMap[0x0a5a] = codePointToUTF8(0x0a17);
    charMap[0x0a5b] = codePointToUTF8(0x0a1c);
    charMap[0x0a5e] = codePointToUTF8(0x0a2b);
    charMap[0x0b48] = codePointToUTF8(0x0b47);
    charMap[0x0b5c] = codePointToUTF8(0x0b21);
    charMap[0x0b5d] = codePointToUTF8(0x0b22);
    charMap[0x0cc0] = codePointToUTF8(0x0cd5);
    charMap[0x0cc7] = codePointToUTF8(0x0cd5);
    charMap[0x0cc8] = codePointToUTF8(0x0cd6);
    charMap[0x0cca] = codePointToUTF8(0x0cc2);
    charMap[0x0ccb] = codePointToUTF8(0x0cc2);
    charMap[0x0dda] = codePointToUTF8(0x0dd9);
    charMap[0x0ddd] = codePointToUTF8(0x0dd9);
    charMap[0x0f43] = codePointToUTF8(0x0f42);
    charMap[0x0f4d] = codePointToUTF8(0x0f4c);
    charMap[0x0f52] = codePointToUTF8(0x0f51);
    charMap[0x0f57] = codePointToUTF8(0x0f56);
    charMap[0x0f5c] = codePointToUTF8(0x0f5b);
    charMap[0x0f69] = codePointToUTF8(0x0f40);
    charMap[0x1026] = codePointToUTF8(0x1025);
    charMap[0x10a0] = codePointToUTF8(0x2d00);
    charMap[0x10a1] = codePointToUTF8(0x2d01);
    charMap[0x10a2] = codePointToUTF8(0x2d02);
    charMap[0x10a3] = codePointToUTF8(0x2d03);
    charMap[0x10a4] = codePointToUTF8(0x2d04);
    charMap[0x10a5] = codePointToUTF8(0x2d05);
    charMap[0x10a6] = codePointToUTF8(0x2d06);
    charMap[0x10a7] = codePointToUTF8(0x2d07);
    charMap[0x10a8] = codePointToUTF8(0x2d08);
    charMap[0x10a9] = codePointToUTF8(0x2d09);
    charMap[0x10aa] = codePointToUTF8(0x2d0a);
    charMap[0x10ab] = codePointToUTF8(0x2d0b);
    charMap[0x10ac] = codePointToUTF8(0x2d0c);
    charMap[0x10ad] = codePointToUTF8(0x2d0d);
    charMap[0x10ae] = codePointToUTF8(0x2d0e);
    charMap[0x10af] = codePointToUTF8(0x2d0f);
    charMap[0x10b0] = codePointToUTF8(0x2d10);
    charMap[0x10b1] = codePointToUTF8(0x2d11);
    charMap[0x10b2] = codePointToUTF8(0x2d12);
    charMap[0x10b3] = codePointToUTF8(0x2d13);
    charMap[0x10b4] = codePointToUTF8(0x2d14);
    charMap[0x10b5] = codePointToUTF8(0x2d15);
    charMap[0x10b6] = codePointToUTF8(0x2d16);
    charMap[0x10b7] = codePointToUTF8(0x2d17);
    charMap[0x10b8] = codePointToUTF8(0x2d18);
    charMap[0x10b9] = codePointToUTF8(0x2d19);
    charMap[0x10ba] = codePointToUTF8(0x2d1a);
    charMap[0x10bb] = codePointToUTF8(0x2d1b);
    charMap[0x10bc] = codePointToUTF8(0x2d1c);
    charMap[0x10bd] = codePointToUTF8(0x2d1d);
    charMap[0x10be] = codePointToUTF8(0x2d1e);
    charMap[0x10bf] = codePointToUTF8(0x2d1f);
    charMap[0x10c0] = codePointToUTF8(0x2d20);
    charMap[0x10c1] = codePointToUTF8(0x2d21);
    charMap[0x10c2] = codePointToUTF8(0x2d22);
    charMap[0x10c3] = codePointToUTF8(0x2d23);
    charMap[0x10c4] = codePointToUTF8(0x2d24);
    charMap[0x10c5] = codePointToUTF8(0x2d25);
    charMap[0x10c7] = codePointToUTF8(0x2d27);
    charMap[0x10cd] = codePointToUTF8(0x2d2d);
    charMap[0x13a0] = codePointToUTF8(0xab70);
    charMap[0x13a1] = codePointToUTF8(0xab71);
    charMap[0x13a2] = codePointToUTF8(0xab72);
    charMap[0x13a3] = codePointToUTF8(0xab73);
    charMap[0x13a4] = codePointToUTF8(0xab74);
    charMap[0x13a5] = codePointToUTF8(0xab75);
    charMap[0x13a6] = codePointToUTF8(0xab76);
    charMap[0x13a7] = codePointToUTF8(0xab77);
    charMap[0x13a8] = codePointToUTF8(0xab78);
    charMap[0x13a9] = codePointToUTF8(0xab79);
    charMap[0x13aa] = codePointToUTF8(0xab7a);
    charMap[0x13ab] = codePointToUTF8(0xab7b);
    charMap[0x13ac] = codePointToUTF8(0xab7c);
    charMap[0x13ad] = codePointToUTF8(0xab7d);
    charMap[0x13ae] = codePointToUTF8(0xab7e);
    charMap[0x13af] = codePointToUTF8(0xab7f);
    charMap[0x13b0] = codePointToUTF8(0xab80);
    charMap[0x13b1] = codePointToUTF8(0xab81);
    charMap[0x13b2] = codePointToUTF8(0xab82);
    charMap[0x13b3] = codePointToUTF8(0xab83);
    charMap[0x13b4] = codePointToUTF8(0xab84);
    charMap[0x13b5] = codePointToUTF8(0xab85);
    charMap[0x13b6] = codePointToUTF8(0xab86);
    charMap[0x13b7] = codePointToUTF8(0xab87);
    charMap[0x13b8] = codePointToUTF8(0xab88);
    charMap[0x13b9] = codePointToUTF8(0xab89);
    charMap[0x13ba] = codePointToUTF8(0xab8a);
    charMap[0x13bb] = codePointToUTF8(0xab8b);
    charMap[0x13bc] = codePointToUTF8(0xab8c);
    charMap[0x13bd] = codePointToUTF8(0xab8d);
    charMap[0x13be] = codePointToUTF8(0xab8e);
    charMap[0x13bf] = codePointToUTF8(0xab8f);
    charMap[0x13c0] = codePointToUTF8(0xab90);
    charMap[0x13c1] = codePointToUTF8(0xab91);
    charMap[0x13c2] = codePointToUTF8(0xab92);
    charMap[0x13c3] = codePointToUTF8(0xab93);
    charMap[0x13c4] = codePointToUTF8(0xab94);
    charMap[0x13c5] = codePointToUTF8(0xab95);
    charMap[0x13c6] = codePointToUTF8(0xab96);
    charMap[0x13c7] = codePointToUTF8(0xab97);
    charMap[0x13c8] = codePointToUTF8(0xab98);
    charMap[0x13c9] = codePointToUTF8(0xab99);
    charMap[0x13ca] = codePointToUTF8(0xab9a);
    charMap[0x13cb] = codePointToUTF8(0xab9b);
    charMap[0x13cc] = codePointToUTF8(0xab9c);
    charMap[0x13cd] = codePointToUTF8(0xab9d);
    charMap[0x13ce] = codePointToUTF8(0xab9e);
    charMap[0x13cf] = codePointToUTF8(0xab9f);
    charMap[0x13d0] = codePointToUTF8(0xaba0);
    charMap[0x13d1] = codePointToUTF8(0xaba1);
    charMap[0x13d2] = codePointToUTF8(0xaba2);
    charMap[0x13d3] = codePointToUTF8(0xaba3);
    charMap[0x13d4] = codePointToUTF8(0xaba4);
    charMap[0x13d5] = codePointToUTF8(0xaba5);
    charMap[0x13d6] = codePointToUTF8(0xaba6);
    charMap[0x13d7] = codePointToUTF8(0xaba7);
    charMap[0x13d8] = codePointToUTF8(0xaba8);
    charMap[0x13d9] = codePointToUTF8(0xaba9);
    charMap[0x13da] = codePointToUTF8(0xabaa);
    charMap[0x13db] = codePointToUTF8(0xabab);
    charMap[0x13dc] = codePointToUTF8(0xabac);
    charMap[0x13dd] = codePointToUTF8(0xabad);
    charMap[0x13de] = codePointToUTF8(0xabae);
    charMap[0x13df] = codePointToUTF8(0xabaf);
    charMap[0x13e0] = codePointToUTF8(0xabb0);
    charMap[0x13e1] = codePointToUTF8(0xabb1);
    charMap[0x13e2] = codePointToUTF8(0xabb2);
    charMap[0x13e3] = codePointToUTF8(0xabb3);
    charMap[0x13e4] = codePointToUTF8(0xabb4);
    charMap[0x13e5] = codePointToUTF8(0xabb5);
    charMap[0x13e6] = codePointToUTF8(0xabb6);
    charMap[0x13e7] = codePointToUTF8(0xabb7);
    charMap[0x13e8] = codePointToUTF8(0xabb8);
    charMap[0x13e9] = codePointToUTF8(0xabb9);
    charMap[0x13ea] = codePointToUTF8(0xabba);
    charMap[0x13eb] = codePointToUTF8(0xabbb);
    charMap[0x13ec] = codePointToUTF8(0xabbc);
    charMap[0x13ed] = codePointToUTF8(0xabbd);
    charMap[0x13ee] = codePointToUTF8(0xabbe);
    charMap[0x13ef] = codePointToUTF8(0xabbf);
    charMap[0x13f0] = codePointToUTF8(0x13f8);
    charMap[0x13f1] = codePointToUTF8(0x13f9);
    charMap[0x13f2] = codePointToUTF8(0x13fa);
    charMap[0x13f3] = codePointToUTF8(0x13fb);
    charMap[0x13f4] = codePointToUTF8(0x13fc);
    charMap[0x13f5] = codePointToUTF8(0x13fd);
    charMap[0x1b3b] = codePointToUTF8(0x1b35);
    charMap[0x1b3d] = codePointToUTF8(0x1b35);
    charMap[0x1b43] = codePointToUTF8(0x1b35);
    charMap[0x1e00] = codePointToUTF8(0x0061);
    charMap[0x1e01] = codePointToUTF8(0x0061);
    charMap[0x1e02] = codePointToUTF8(0x0062);
    charMap[0x1e03] = codePointToUTF8(0x0062);
    charMap[0x1e04] = codePointToUTF8(0x0062);
    charMap[0x1e05] = codePointToUTF8(0x0062);
    charMap[0x1e06] = codePointToUTF8(0x0062);
    charMap[0x1e07] = codePointToUTF8(0x0062);
    charMap[0x1e08] = codePointToUTF8(0x0063);
    charMap[0x1e09] = codePointToUTF8(0x0063);
    charMap[0x1e0a] = codePointToUTF8(0x0064);
    charMap[0x1e0b] = codePointToUTF8(0x0064);
    charMap[0x1e0c] = codePointToUTF8(0x0064);
    charMap[0x1e0d] = codePointToUTF8(0x0064);
    charMap[0x1e0e] = codePointToUTF8(0x0064);
    charMap[0x1e0f] = codePointToUTF8(0x0064);
    charMap[0x1e10] = codePointToUTF8(0x0064);
    charMap[0x1e11] = codePointToUTF8(0x0064);
    charMap[0x1e12] = codePointToUTF8(0x0064);
    charMap[0x1e13] = codePointToUTF8(0x0064);
    charMap[0x1e14] = codePointToUTF8(0x0065);
    charMap[0x1e15] = codePointToUTF8(0x0065);
    charMap[0x1e16] = codePointToUTF8(0x0065);
    charMap[0x1e17] = codePointToUTF8(0x0065);
    charMap[0x1e18] = codePointToUTF8(0x0065);
    charMap[0x1e19] = codePointToUTF8(0x0065);
    charMap[0x1e1a] = codePointToUTF8(0x0065);
    charMap[0x1e1b] = codePointToUTF8(0x0065);
    charMap[0x1e1c] = codePointToUTF8(0x0065);
    charMap[0x1e1d] = codePointToUTF8(0x0065);
    charMap[0x1e1e] = codePointToUTF8(0x0066);
    charMap[0x1e1f] = codePointToUTF8(0x0066);
    charMap[0x1e20] = codePointToUTF8(0x0067);
    charMap[0x1e21] = codePointToUTF8(0x0067);
    charMap[0x1e22] = codePointToUTF8(0x0068);
    charMap[0x1e23] = codePointToUTF8(0x0068);
    charMap[0x1e24] = codePointToUTF8(0x0068);
    charMap[0x1e25] = codePointToUTF8(0x0068);
    charMap[0x1e26] = codePointToUTF8(0x0068);
    charMap[0x1e27] = codePointToUTF8(0x0068);
    charMap[0x1e28] = codePointToUTF8(0x0068);
    charMap[0x1e29] = codePointToUTF8(0x0068);
    charMap[0x1e2a] = codePointToUTF8(0x0068);
    charMap[0x1e2b] = codePointToUTF8(0x0068);
    charMap[0x1e2c] = codePointToUTF8(0x0069);
    charMap[0x1e2d] = codePointToUTF8(0x0069);
    charMap[0x1e2e] = codePointToUTF8(0x0069);
    charMap[0x1e2f] = codePointToUTF8(0x0069);
    charMap[0x1e30] = codePointToUTF8(0x006b);
    charMap[0x1e31] = codePointToUTF8(0x006b);
    charMap[0x1e32] = codePointToUTF8(0x006b);
    charMap[0x1e33] = codePointToUTF8(0x006b);
    charMap[0x1e34] = codePointToUTF8(0x006b);
    charMap[0x1e35] = codePointToUTF8(0x006b);
    charMap[0x1e36] = codePointToUTF8(0x006c);
    charMap[0x1e37] = codePointToUTF8(0x006c);
    charMap[0x1e38] = codePointToUTF8(0x006c);
    charMap[0x1e39] = codePointToUTF8(0x006c);
    charMap[0x1e3a] = codePointToUTF8(0x006c);
    charMap[0x1e3b] = codePointToUTF8(0x006c);
    charMap[0x1e3c] = codePointToUTF8(0x006c);
    charMap[0x1e3d] = codePointToUTF8(0x006c);
    charMap[0x1e3e] = codePointToUTF8(0x006d);
    charMap[0x1e3f] = codePointToUTF8(0x006d);
    charMap[0x1e40] = codePointToUTF8(0x006d);
    charMap[0x1e41] = codePointToUTF8(0x006d);
    charMap[0x1e42] = codePointToUTF8(0x006d);
    charMap[0x1e43] = codePointToUTF8(0x006d);
    charMap[0x1e44] = codePointToUTF8(0x006e);
    charMap[0x1e45] = codePointToUTF8(0x006e);
    charMap[0x1e46] = codePointToUTF8(0x006e);
    charMap[0x1e47] = codePointToUTF8(0x006e);
    charMap[0x1e48] = codePointToUTF8(0x006e);
    charMap[0x1e49] = codePointToUTF8(0x006e);
    charMap[0x1e4a] = codePointToUTF8(0x006e);
    charMap[0x1e4b] = codePointToUTF8(0x006e);
    charMap[0x1e4c] = codePointToUTF8(0x006f);
    charMap[0x1e4d] = codePointToUTF8(0x006f);
    charMap[0x1e4e] = codePointToUTF8(0x006f);
    charMap[0x1e4f] = codePointToUTF8(0x006f);
    charMap[0x1e50] = codePointToUTF8(0x006f);
    charMap[0x1e51] = codePointToUTF8(0x006f);
    charMap[0x1e52] = codePointToUTF8(0x006f);
    charMap[0x1e53] = codePointToUTF8(0x006f);
    charMap[0x1e54] = codePointToUTF8(0x0070);
    charMap[0x1e55] = codePointToUTF8(0x0070);
    charMap[0x1e56] = codePointToUTF8(0x0070);
    charMap[0x1e57] = codePointToUTF8(0x0070);
    charMap[0x1e58] = codePointToUTF8(0x0072);
    charMap[0x1e59] = codePointToUTF8(0x0072);
    charMap[0x1e5a] = codePointToUTF8(0x0072);
    charMap[0x1e5b] = codePointToUTF8(0x0072);
    charMap[0x1e5c] = codePointToUTF8(0x0072);
    charMap[0x1e5d] = codePointToUTF8(0x0072);
    charMap[0x1e5e] = codePointToUTF8(0x0072);
    charMap[0x1e5f] = codePointToUTF8(0x0072);
    charMap[0x1e60] = codePointToUTF8(0x0073);
    charMap[0x1e61] = codePointToUTF8(0x0073);
    charMap[0x1e62] = codePointToUTF8(0x0073);
    charMap[0x1e63] = codePointToUTF8(0x0073);
    charMap[0x1e64] = codePointToUTF8(0x0073);
    charMap[0x1e65] = codePointToUTF8(0x0073);
    charMap[0x1e66] = codePointToUTF8(0x0073);
    charMap[0x1e67] = codePointToUTF8(0x0073);
    charMap[0x1e68] = codePointToUTF8(0x0073);
    charMap[0x1e69] = codePointToUTF8(0x0073);
    charMap[0x1e6a] = codePointToUTF8(0x0074);
    charMap[0x1e6b] = codePointToUTF8(0x0074);
    charMap[0x1e6c] = codePointToUTF8(0x0074);
    charMap[0x1e6d] = codePointToUTF8(0x0074);
    charMap[0x1e6e] = codePointToUTF8(0x0074);
    charMap[0x1e6f] = codePointToUTF8(0x0074);
    charMap[0x1e70] = codePointToUTF8(0x0074);
    charMap[0x1e71] = codePointToUTF8(0x0074);
    charMap[0x1e72] = codePointToUTF8(0x0075);
    charMap[0x1e73] = codePointToUTF8(0x0075);
    charMap[0x1e74] = codePointToUTF8(0x0075);
    charMap[0x1e75] = codePointToUTF8(0x0075);
    charMap[0x1e76] = codePointToUTF8(0x0075);
    charMap[0x1e77] = codePointToUTF8(0x0075);
    charMap[0x1e78] = codePointToUTF8(0x0075);
    charMap[0x1e79] = codePointToUTF8(0x0075);
    charMap[0x1e7a] = codePointToUTF8(0x0075);
    charMap[0x1e7b] = codePointToUTF8(0x0075);
    charMap[0x1e7c] = codePointToUTF8(0x0076);
    charMap[0x1e7d] = codePointToUTF8(0x0076);
    charMap[0x1e7e] = codePointToUTF8(0x0076);
    charMap[0x1e7f] = codePointToUTF8(0x0076);
    charMap[0x1e80] = codePointToUTF8(0x0077);
    charMap[0x1e81] = codePointToUTF8(0x0077);
    charMap[0x1e82] = codePointToUTF8(0x0077);
    charMap[0x1e83] = codePointToUTF8(0x0077);
    charMap[0x1e84] = codePointToUTF8(0x0077);
    charMap[0x1e85] = codePointToUTF8(0x0077);
    charMap[0x1e86] = codePointToUTF8(0x0077);
    charMap[0x1e87] = codePointToUTF8(0x0077);
    charMap[0x1e88] = codePointToUTF8(0x0077);
    charMap[0x1e89] = codePointToUTF8(0x0077);
    charMap[0x1e8a] = codePointToUTF8(0x0078);
    charMap[0x1e8b] = codePointToUTF8(0x0078);
    charMap[0x1e8c] = codePointToUTF8(0x0078);
    charMap[0x1e8d] = codePointToUTF8(0x0078);
    charMap[0x1e8e] = codePointToUTF8(0x0079);
    charMap[0x1e8f] = codePointToUTF8(0x0079);
    charMap[0x1e90] = codePointToUTF8(0x007a);
    charMap[0x1e91] = codePointToUTF8(0x007a);
    charMap[0x1e92] = codePointToUTF8(0x007a);
    charMap[0x1e93] = codePointToUTF8(0x007a);
    charMap[0x1e94] = codePointToUTF8(0x007a);
    charMap[0x1e95] = codePointToUTF8(0x007a);
    charMap[0x1e96] = codePointToUTF8(0x0068);
    charMap[0x1e97] = codePointToUTF8(0x0074);
    charMap[0x1e98] = codePointToUTF8(0x0077);
    charMap[0x1e99] = codePointToUTF8(0x0079);
    charMap[0x1e9b] = codePointToUTF8(0x017f);
    charMap[0x1e9e] = codePointToUTF8(0x00df);
    charMap[0x1ea0] = codePointToUTF8(0x0061);
    charMap[0x1ea1] = codePointToUTF8(0x0061);
    charMap[0x1ea2] = codePointToUTF8(0x0061);
    charMap[0x1ea3] = codePointToUTF8(0x0061);
    charMap[0x1ea4] = codePointToUTF8(0x0061);
    charMap[0x1ea5] = codePointToUTF8(0x0061);
    charMap[0x1ea6] = codePointToUTF8(0x0061);
    charMap[0x1ea7] = codePointToUTF8(0x0061);
    charMap[0x1ea8] = codePointToUTF8(0x0061);
    charMap[0x1ea9] = codePointToUTF8(0x0061);
    charMap[0x1eaa] = codePointToUTF8(0x0061);
    charMap[0x1eab] = codePointToUTF8(0x0061);
    charMap[0x1eac] = codePointToUTF8(0x0061);
    charMap[0x1ead] = codePointToUTF8(0x0061);
    charMap[0x1eae] = codePointToUTF8(0x0061);
    charMap[0x1eaf] = codePointToUTF8(0x0061);
    charMap[0x1eb0] = codePointToUTF8(0x0061);
    charMap[0x1eb1] = codePointToUTF8(0x0061);
    charMap[0x1eb2] = codePointToUTF8(0x0061);
    charMap[0x1eb3] = codePointToUTF8(0x0061);
    charMap[0x1eb4] = codePointToUTF8(0x0061);
    charMap[0x1eb5] = codePointToUTF8(0x0061);
    charMap[0x1eb6] = codePointToUTF8(0x0061);
    charMap[0x1eb7] = codePointToUTF8(0x0061);
    charMap[0x1eb8] = codePointToUTF8(0x0065);
    charMap[0x1eb9] = codePointToUTF8(0x0065);
    charMap[0x1eba] = codePointToUTF8(0x0065);
    charMap[0x1ebb] = codePointToUTF8(0x0065);
    charMap[0x1ebc] = codePointToUTF8(0x0065);
    charMap[0x1ebd] = codePointToUTF8(0x0065);
    charMap[0x1ebe] = codePointToUTF8(0x0065);
    charMap[0x1ebf] = codePointToUTF8(0x0065);
    charMap[0x1ec0] = codePointToUTF8(0x0065);
    charMap[0x1ec1] = codePointToUTF8(0x0065);
    charMap[0x1ec2] = codePointToUTF8(0x0065);
    charMap[0x1ec3] = codePointToUTF8(0x0065);
    charMap[0x1ec4] = codePointToUTF8(0x0065);
    charMap[0x1ec5] = codePointToUTF8(0x0065);
    charMap[0x1ec6] = codePointToUTF8(0x0065);
    charMap[0x1ec7] = codePointToUTF8(0x0065);
    charMap[0x1ec8] = codePointToUTF8(0x0069);
    charMap[0x1ec9] = codePointToUTF8(0x0069);
    charMap[0x1eca] = codePointToUTF8(0x0069);
    charMap[0x1ecb] = codePointToUTF8(0x0069);
    charMap[0x1ecc] = codePointToUTF8(0x006f);
    charMap[0x1ecd] = codePointToUTF8(0x006f);
    charMap[0x1ece] = codePointToUTF8(0x006f);
    charMap[0x1ecf] = codePointToUTF8(0x006f);
    charMap[0x1ed0] = codePointToUTF8(0x006f);
    charMap[0x1ed1] = codePointToUTF8(0x006f);
    charMap[0x1ed2] = codePointToUTF8(0x006f);
    charMap[0x1ed3] = codePointToUTF8(0x006f);
    charMap[0x1ed4] = codePointToUTF8(0x006f);
    charMap[0x1ed5] = codePointToUTF8(0x006f);
    charMap[0x1ed6] = codePointToUTF8(0x006f);
    charMap[0x1ed7] = codePointToUTF8(0x006f);
    charMap[0x1ed8] = codePointToUTF8(0x006f);
    charMap[0x1ed9] = codePointToUTF8(0x006f);
    charMap[0x1eda] = codePointToUTF8(0x006f);
    charMap[0x1edb] = codePointToUTF8(0x006f);
    charMap[0x1edc] = codePointToUTF8(0x006f);
    charMap[0x1edd] = codePointToUTF8(0x006f);
    charMap[0x1ede] = codePointToUTF8(0x006f);
    charMap[0x1edf] = codePointToUTF8(0x006f);
    charMap[0x1ee0] = codePointToUTF8(0x006f);
    charMap[0x1ee1] = codePointToUTF8(0x006f);
    charMap[0x1ee2] = codePointToUTF8(0x006f);
    charMap[0x1ee3] = codePointToUTF8(0x006f);
    charMap[0x1ee4] = codePointToUTF8(0x0075);
    charMap[0x1ee5] = codePointToUTF8(0x0075);
    charMap[0x1ee6] = codePointToUTF8(0x0075);
    charMap[0x1ee7] = codePointToUTF8(0x0075);
    charMap[0x1ee8] = codePointToUTF8(0x0075);
    charMap[0x1ee9] = codePointToUTF8(0x0075);
    charMap[0x1eea] = codePointToUTF8(0x0075);
    charMap[0x1eeb] = codePointToUTF8(0x0075);
    charMap[0x1eec] = codePointToUTF8(0x0075);
    charMap[0x1eed] = codePointToUTF8(0x0075);
    charMap[0x1eee] = codePointToUTF8(0x0075);
    charMap[0x1eef] = codePointToUTF8(0x0075);
    charMap[0x1ef0] = codePointToUTF8(0x0075);
    charMap[0x1ef1] = codePointToUTF8(0x0075);
    charMap[0x1ef2] = codePointToUTF8(0x0079);
    charMap[0x1ef3] = codePointToUTF8(0x0079);
    charMap[0x1ef4] = codePointToUTF8(0x0079);
    charMap[0x1ef5] = codePointToUTF8(0x0079);
    charMap[0x1ef6] = codePointToUTF8(0x0079);
    charMap[0x1ef7] = codePointToUTF8(0x0079);
    charMap[0x1ef8] = codePointToUTF8(0x0079);
    charMap[0x1ef9] = codePointToUTF8(0x0079);
    charMap[0x1efa] = codePointToUTF8(0x1efb);
    charMap[0x1efc] = codePointToUTF8(0x1efd);
    charMap[0x1efe] = codePointToUTF8(0x1eff);
    charMap[0x1f00] = codePointToUTF8(0x03b1);
    charMap[0x1f01] = codePointToUTF8(0x03b1);
    charMap[0x1f02] = codePointToUTF8(0x03b1);
    charMap[0x1f03] = codePointToUTF8(0x03b1);
    charMap[0x1f04] = codePointToUTF8(0x03b1);
    charMap[0x1f05] = codePointToUTF8(0x03b1);
    charMap[0x1f06] = codePointToUTF8(0x03b1);
    charMap[0x1f07] = codePointToUTF8(0x03b1);
    charMap[0x1f08] = codePointToUTF8(0x03b1);
    charMap[0x1f09] = codePointToUTF8(0x03b1);
    charMap[0x1f0a] = codePointToUTF8(0x03b1);
    charMap[0x1f0b] = codePointToUTF8(0x03b1);
    charMap[0x1f0c] = codePointToUTF8(0x03b1);
    charMap[0x1f0d] = codePointToUTF8(0x03b1);
    charMap[0x1f0e] = codePointToUTF8(0x03b1);
    charMap[0x1f0f] = codePointToUTF8(0x03b1);
    charMap[0x1f10] = codePointToUTF8(0x03b5);
    charMap[0x1f11] = codePointToUTF8(0x03b5);
    charMap[0x1f12] = codePointToUTF8(0x03b5);
    charMap[0x1f13] = codePointToUTF8(0x03b5);
    charMap[0x1f14] = codePointToUTF8(0x03b5);
    charMap[0x1f15] = codePointToUTF8(0x03b5);
    charMap[0x1f18] = codePointToUTF8(0x03b5);
    charMap[0x1f19] = codePointToUTF8(0x03b5);
    charMap[0x1f1a] = codePointToUTF8(0x03b5);
    charMap[0x1f1b] = codePointToUTF8(0x03b5);
    charMap[0x1f1c] = codePointToUTF8(0x03b5);
    charMap[0x1f1d] = codePointToUTF8(0x03b5);
    charMap[0x1f20] = codePointToUTF8(0x03b7);
    charMap[0x1f21] = codePointToUTF8(0x03b7);
    charMap[0x1f22] = codePointToUTF8(0x03b7);
    charMap[0x1f23] = codePointToUTF8(0x03b7);
    charMap[0x1f24] = codePointToUTF8(0x03b7);
    charMap[0x1f25] = codePointToUTF8(0x03b7);
    charMap[0x1f26] = codePointToUTF8(0x03b7);
    charMap[0x1f27] = codePointToUTF8(0x03b7);
    charMap[0x1f28] = codePointToUTF8(0x03b7);
    charMap[0x1f29] = codePointToUTF8(0x03b7);
    charMap[0x1f2a] = codePointToUTF8(0x03b7);
    charMap[0x1f2b] = codePointToUTF8(0x03b7);
    charMap[0x1f2c] = codePointToUTF8(0x03b7);
    charMap[0x1f2d] = codePointToUTF8(0x03b7);
    charMap[0x1f2e] = codePointToUTF8(0x03b7);
    charMap[0x1f2f] = codePointToUTF8(0x03b7);
    charMap[0x1f30] = codePointToUTF8(0x03b9);
    charMap[0x1f31] = codePointToUTF8(0x03b9);
    charMap[0x1f32] = codePointToUTF8(0x03b9);
    charMap[0x1f33] = codePointToUTF8(0x03b9);
    charMap[0x1f34] = codePointToUTF8(0x03b9);
    charMap[0x1f35] = codePointToUTF8(0x03b9);
    charMap[0x1f36] = codePointToUTF8(0x03b9);
    charMap[0x1f37] = codePointToUTF8(0x03b9);
    charMap[0x1f38] = codePointToUTF8(0x03b9);
    charMap[0x1f39] = codePointToUTF8(0x03b9);
    charMap[0x1f3a] = codePointToUTF8(0x03b9);
    charMap[0x1f3b] = codePointToUTF8(0x03b9);
    charMap[0x1f3c] = codePointToUTF8(0x03b9);
    charMap[0x1f3d] = codePointToUTF8(0x03b9);
    charMap[0x1f3e] = codePointToUTF8(0x03b9);
    charMap[0x1f3f] = codePointToUTF8(0x03b9);
    charMap[0x1f40] = codePointToUTF8(0x03bf);
    charMap[0x1f41] = codePointToUTF8(0x03bf);
    charMap[0x1f42] = codePointToUTF8(0x03bf);
    charMap[0x1f43] = codePointToUTF8(0x03bf);
    charMap[0x1f44] = codePointToUTF8(0x03bf);
    charMap[0x1f45] = codePointToUTF8(0x03bf);
    charMap[0x1f48] = codePointToUTF8(0x03bf);
    charMap[0x1f49] = codePointToUTF8(0x03bf);
    charMap[0x1f4a] = codePointToUTF8(0x03bf);
    charMap[0x1f4b] = codePointToUTF8(0x03bf);
    charMap[0x1f4c] = codePointToUTF8(0x03bf);
    charMap[0x1f4d] = codePointToUTF8(0x03bf);
    charMap[0x1f50] = codePointToUTF8(0x03c5);
    charMap[0x1f51] = codePointToUTF8(0x03c5);
    charMap[0x1f52] = codePointToUTF8(0x03c5);
    charMap[0x1f53] = codePointToUTF8(0x03c5);
    charMap[0x1f54] = codePointToUTF8(0x03c5);
    charMap[0x1f55] = codePointToUTF8(0x03c5);
    charMap[0x1f56] = codePointToUTF8(0x03c5);
    charMap[0x1f57] = codePointToUTF8(0x03c5);
    charMap[0x1f59] = codePointToUTF8(0x03c5);
    charMap[0x1f5b] = codePointToUTF8(0x03c5);
    charMap[0x1f5d] = codePointToUTF8(0x03c5);
    charMap[0x1f5f] = codePointToUTF8(0x03c5);
    charMap[0x1f60] = codePointToUTF8(0x03c9);
    charMap[0x1f61] = codePointToUTF8(0x03c9);
    charMap[0x1f62] = codePointToUTF8(0x03c9);
    charMap[0x1f63] = codePointToUTF8(0x03c9);
    charMap[0x1f64] = codePointToUTF8(0x03c9);
    charMap[0x1f65] = codePointToUTF8(0x03c9);
    charMap[0x1f66] = codePointToUTF8(0x03c9);
    charMap[0x1f67] = codePointToUTF8(0x03c9);
    charMap[0x1f68] = codePointToUTF8(0x03c9);
    charMap[0x1f69] = codePointToUTF8(0x03c9);
    charMap[0x1f6a] = codePointToUTF8(0x03c9);
    charMap[0x1f6b] = codePointToUTF8(0x03c9);
    charMap[0x1f6c] = codePointToUTF8(0x03c9);
    charMap[0x1f6d] = codePointToUTF8(0x03c9);
    charMap[0x1f6e] = codePointToUTF8(0x03c9);
    charMap[0x1f6f] = codePointToUTF8(0x03c9);
    charMap[0x1f70] = codePointToUTF8(0x03b1);
    charMap[0x1f71] = codePointToUTF8(0x03b1);
    charMap[0x1f72] = codePointToUTF8(0x03b5);
    charMap[0x1f73] = codePointToUTF8(0x03b5);
    charMap[0x1f74] = codePointToUTF8(0x03b7);
    charMap[0x1f75] = codePointToUTF8(0x03b7);
    charMap[0x1f76] = codePointToUTF8(0x03b9);
    charMap[0x1f77] = codePointToUTF8(0x03b9);
    charMap[0x1f78] = codePointToUTF8(0x03bf);
    charMap[0x1f79] = codePointToUTF8(0x03bf);
    charMap[0x1f7a] = codePointToUTF8(0x03c5);
    charMap[0x1f7b] = codePointToUTF8(0x03c5);
    charMap[0x1f7c] = codePointToUTF8(0x03c9);
    charMap[0x1f7d] = codePointToUTF8(0x03c9);
    charMap[0x1f80] = codePointToUTF8(0x03b1);
    charMap[0x1f81] = codePointToUTF8(0x03b1);
    charMap[0x1f82] = codePointToUTF8(0x03b1);
    charMap[0x1f83] = codePointToUTF8(0x03b1);
    charMap[0x1f84] = codePointToUTF8(0x03b1);
    charMap[0x1f85] = codePointToUTF8(0x03b1);
    charMap[0x1f86] = codePointToUTF8(0x03b1);
    charMap[0x1f87] = codePointToUTF8(0x03b1);
    charMap[0x1f88] = codePointToUTF8(0x03b1);
    charMap[0x1f89] = codePointToUTF8(0x03b1);
    charMap[0x1f8a] = codePointToUTF8(0x03b1);
    charMap[0x1f8b] = codePointToUTF8(0x03b1);
    charMap[0x1f8c] = codePointToUTF8(0x03b1);
    charMap[0x1f8d] = codePointToUTF8(0x03b1);
    charMap[0x1f8e] = codePointToUTF8(0x03b1);
    charMap[0x1f8f] = codePointToUTF8(0x03b1);
    charMap[0x1f90] = codePointToUTF8(0x03b7);
    charMap[0x1f91] = codePointToUTF8(0x03b7);
    charMap[0x1f92] = codePointToUTF8(0x03b7);
    charMap[0x1f93] = codePointToUTF8(0x03b7);
    charMap[0x1f94] = codePointToUTF8(0x03b7);
    charMap[0x1f95] = codePointToUTF8(0x03b7);
    charMap[0x1f96] = codePointToUTF8(0x03b7);
    charMap[0x1f97] = codePointToUTF8(0x03b7);
    charMap[0x1f98] = codePointToUTF8(0x03b7);
    charMap[0x1f99] = codePointToUTF8(0x03b7);
    charMap[0x1f9a] = codePointToUTF8(0x03b7);
    charMap[0x1f9b] = codePointToUTF8(0x03b7);
    charMap[0x1f9c] = codePointToUTF8(0x03b7);
    charMap[0x1f9d] = codePointToUTF8(0x03b7);
    charMap[0x1f9e] = codePointToUTF8(0x03b7);
    charMap[0x1f9f] = codePointToUTF8(0x03b7);
    charMap[0x1fa0] = codePointToUTF8(0x03c9);
    charMap[0x1fa1] = codePointToUTF8(0x03c9);
    charMap[0x1fa2] = codePointToUTF8(0x03c9);
    charMap[0x1fa3] = codePointToUTF8(0x03c9);
    charMap[0x1fa4] = codePointToUTF8(0x03c9);
    charMap[0x1fa5] = codePointToUTF8(0x03c9);
    charMap[0x1fa6] = codePointToUTF8(0x03c9);
    charMap[0x1fa7] = codePointToUTF8(0x03c9);
    charMap[0x1fa8] = codePointToUTF8(0x03c9);
    charMap[0x1fa9] = codePointToUTF8(0x03c9);
    charMap[0x1faa] = codePointToUTF8(0x03c9);
    charMap[0x1fab] = codePointToUTF8(0x03c9);
    charMap[0x1fac] = codePointToUTF8(0x03c9);
    charMap[0x1fad] = codePointToUTF8(0x03c9);
    charMap[0x1fae] = codePointToUTF8(0x03c9);
    charMap[0x1faf] = codePointToUTF8(0x03c9);
    charMap[0x1fb0] = codePointToUTF8(0x03b1);
    charMap[0x1fb1] = codePointToUTF8(0x03b1);
    charMap[0x1fb2] = codePointToUTF8(0x03b1);
    charMap[0x1fb3] = codePointToUTF8(0x03b1);
    charMap[0x1fb4] = codePointToUTF8(0x03b1);
    charMap[0x1fb6] = codePointToUTF8(0x03b1);
    charMap[0x1fb7] = codePointToUTF8(0x03b1);
    charMap[0x1fb8] = codePointToUTF8(0x03b1);
    charMap[0x1fb9] = codePointToUTF8(0x03b1);
    charMap[0x1fba] = codePointToUTF8(0x03b1);
    charMap[0x1fbb] = codePointToUTF8(0x03b1);
    charMap[0x1fbc] = codePointToUTF8(0x03b1);
    charMap[0x1fc1] = codePointToUTF8(0x00a8);
    charMap[0x1fc2] = codePointToUTF8(0x03b7);
    charMap[0x1fc3] = codePointToUTF8(0x03b7);
    charMap[0x1fc4] = codePointToUTF8(0x03b7);
    charMap[0x1fc6] = codePointToUTF8(0x03b7);
    charMap[0x1fc7] = codePointToUTF8(0x03b7);
    charMap[0x1fc8] = codePointToUTF8(0x03b5);
    charMap[0x1fc9] = codePointToUTF8(0x03b5);
    charMap[0x1fca] = codePointToUTF8(0x03b7);
    charMap[0x1fcb] = codePointToUTF8(0x03b7);
    charMap[0x1fcc] = codePointToUTF8(0x03b7);
    charMap[0x1fcd] = codePointToUTF8(0x1fbf);
    charMap[0x1fce] = codePointToUTF8(0x1fbf);
    charMap[0x1fcf] = codePointToUTF8(0x1fbf);
    charMap[0x1fd0] = codePointToUTF8(0x03b9);
    charMap[0x1fd1] = codePointToUTF8(0x03b9);
    charMap[0x1fd2] = codePointToUTF8(0x03b9);
    charMap[0x1fd3] = codePointToUTF8(0x03b9);
    charMap[0x1fd6] = codePointToUTF8(0x03b9);
    charMap[0x1fd7] = codePointToUTF8(0x03b9);
    charMap[0x1fd8] = codePointToUTF8(0x03b9);
    charMap[0x1fd9] = codePointToUTF8(0x03b9);
    charMap[0x1fda] = codePointToUTF8(0x03b9);
    charMap[0x1fdb] = codePointToUTF8(0x03b9);
    charMap[0x1fdd] = codePointToUTF8(0x1ffe);
    charMap[0x1fde] = codePointToUTF8(0x1ffe);
    charMap[0x1fdf] = codePointToUTF8(0x1ffe);
    charMap[0x1fe0] = codePointToUTF8(0x03c5);
    charMap[0x1fe1] = codePointToUTF8(0x03c5);
    charMap[0x1fe2] = codePointToUTF8(0x03c5);
    charMap[0x1fe3] = codePointToUTF8(0x03c5);
    charMap[0x1fe4] = codePointToUTF8(0x03c1);
    charMap[0x1fe5] = codePointToUTF8(0x03c1);
    charMap[0x1fe6] = codePointToUTF8(0x03c5);
    charMap[0x1fe7] = codePointToUTF8(0x03c5);
    charMap[0x1fe8] = codePointToUTF8(0x03c5);
    charMap[0x1fe9] = codePointToUTF8(0x03c5);
    charMap[0x1fea] = codePointToUTF8(0x03c5);
    charMap[0x1feb] = codePointToUTF8(0x03c5);
    charMap[0x1fec] = codePointToUTF8(0x03c1);
    charMap[0x1fed] = codePointToUTF8(0x00a8);
    charMap[0x1fee] = codePointToUTF8(0x00a8);
    charMap[0x1ff2] = codePointToUTF8(0x03c9);
    charMap[0x1ff3] = codePointToUTF8(0x03c9);
    charMap[0x1ff4] = codePointToUTF8(0x03c9);
    charMap[0x1ff6] = codePointToUTF8(0x03c9);
    charMap[0x1ff7] = codePointToUTF8(0x03c9);
    charMap[0x1ff8] = codePointToUTF8(0x03bf);
    charMap[0x1ff9] = codePointToUTF8(0x03bf);
    charMap[0x1ffa] = codePointToUTF8(0x03c9);
    charMap[0x1ffb] = codePointToUTF8(0x03c9);
    charMap[0x1ffc] = codePointToUTF8(0x03c9);
    charMap[0x2126] = codePointToUTF8(0x03c9);
    charMap[0x212a] = codePointToUTF8(0x006b);
    charMap[0x212b] = codePointToUTF8(0x0061);
    charMap[0x2132] = codePointToUTF8(0x214e);
    charMap[0x2160] = codePointToUTF8(0x2170);
    charMap[0x2161] = codePointToUTF8(0x2171);
    charMap[0x2162] = codePointToUTF8(0x2172);
    charMap[0x2163] = codePointToUTF8(0x2173);
    charMap[0x2164] = codePointToUTF8(0x2174);
    charMap[0x2165] = codePointToUTF8(0x2175);
    charMap[0x2166] = codePointToUTF8(0x2176);
    charMap[0x2167] = codePointToUTF8(0x2177);
    charMap[0x2168] = codePointToUTF8(0x2178);
    charMap[0x2169] = codePointToUTF8(0x2179);
    charMap[0x216a] = codePointToUTF8(0x217a);
    charMap[0x216b] = codePointToUTF8(0x217b);
    charMap[0x216c] = codePointToUTF8(0x217c);
    charMap[0x216d] = codePointToUTF8(0x217d);
    charMap[0x216e] = codePointToUTF8(0x217e);
    charMap[0x216f] = codePointToUTF8(0x217f);
    charMap[0x2183] = codePointToUTF8(0x2184);
    charMap[0x219a] = codePointToUTF8(0x2190);
    charMap[0x219b] = codePointToUTF8(0x2192);
    charMap[0x21ae] = codePointToUTF8(0x2194);
    charMap[0x21cd] = codePointToUTF8(0x21d0);
    charMap[0x21ce] = codePointToUTF8(0x21d4);
    charMap[0x21cf] = codePointToUTF8(0x21d2);
    charMap[0x2204] = codePointToUTF8(0x2203);
    charMap[0x2209] = codePointToUTF8(0x2208);
    charMap[0x220c] = codePointToUTF8(0x220b);
    charMap[0x2224] = codePointToUTF8(0x2223);
    charMap[0x2226] = codePointToUTF8(0x2225);
    charMap[0x2241] = codePointToUTF8(0x223c);
    charMap[0x2244] = codePointToUTF8(0x2243);
    charMap[0x2247] = codePointToUTF8(0x2245);
    charMap[0x2249] = codePointToUTF8(0x2248);
    charMap[0x2260] = codePointToUTF8(0x003d);
    charMap[0x2262] = codePointToUTF8(0x2261);
    charMap[0x226d] = codePointToUTF8(0x224d);
    charMap[0x226e] = codePointToUTF8(0x003c);
    charMap[0x226f] = codePointToUTF8(0x003e);
    charMap[0x2270] = codePointToUTF8(0x2264);
    charMap[0x2271] = codePointToUTF8(0x2265);
    charMap[0x2274] = codePointToUTF8(0x2272);
    charMap[0x2275] = codePointToUTF8(0x2273);
    charMap[0x2278] = codePointToUTF8(0x2276);
    charMap[0x2279] = codePointToUTF8(0x2277);
    charMap[0x2280] = codePointToUTF8(0x227a);
    charMap[0x2281] = codePointToUTF8(0x227b);
    charMap[0x2284] = codePointToUTF8(0x2282);
    charMap[0x2285] = codePointToUTF8(0x2283);
    charMap[0x2288] = codePointToUTF8(0x2286);
    charMap[0x2289] = codePointToUTF8(0x2287);
    charMap[0x22ac] = codePointToUTF8(0x22a2);
    charMap[0x22ad] = codePointToUTF8(0x22a8);
    charMap[0x22ae] = codePointToUTF8(0x22a9);
    charMap[0x22af] = codePointToUTF8(0x22ab);
    charMap[0x22e0] = codePointToUTF8(0x227c);
    charMap[0x22e1] = codePointToUTF8(0x227d);
    charMap[0x22e2] = codePointToUTF8(0x2291);
    charMap[0x22e3] = codePointToUTF8(0x2292);
    charMap[0x22ea] = codePointToUTF8(0x22b2);
    charMap[0x22eb] = codePointToUTF8(0x22b3);
    charMap[0x22ec] = codePointToUTF8(0x22b4);
    charMap[0x22ed] = codePointToUTF8(0x22b5);
    charMap[0x24b6] = codePointToUTF8(0x24d0);
    charMap[0x24b7] = codePointToUTF8(0x24d1);
    charMap[0x24b8] = codePointToUTF8(0x24d2);
    charMap[0x24b9] = codePointToUTF8(0x24d3);
    charMap[0x24ba] = codePointToUTF8(0x24d4);
    charMap[0x24bb] = codePointToUTF8(0x24d5);
    charMap[0x24bc] = codePointToUTF8(0x24d6);
    charMap[0x24bd] = codePointToUTF8(0x24d7);
    charMap[0x24be] = codePointToUTF8(0x24d8);
    charMap[0x24bf] = codePointToUTF8(0x24d9);
    charMap[0x24c0] = codePointToUTF8(0x24da);
    charMap[0x24c1] = codePointToUTF8(0x24db);
    charMap[0x24c2] = codePointToUTF8(0x24dc);
    charMap[0x24c3] = codePointToUTF8(0x24dd);
    charMap[0x24c4] = codePointToUTF8(0x24de);
    charMap[0x24c5] = codePointToUTF8(0x24df);
    charMap[0x24c6] = codePointToUTF8(0x24e0);
    charMap[0x24c7] = codePointToUTF8(0x24e1);
    charMap[0x24c8] = codePointToUTF8(0x24e2);
    charMap[0x24c9] = codePointToUTF8(0x24e3);
    charMap[0x24ca] = codePointToUTF8(0x24e4);
    charMap[0x24cb] = codePointToUTF8(0x24e5);
    charMap[0x24cc] = codePointToUTF8(0x24e6);
    charMap[0x24cd] = codePointToUTF8(0x24e7);
    charMap[0x24ce] = codePointToUTF8(0x24e8);
    charMap[0x24cf] = codePointToUTF8(0x24e9);
    charMap[0x2adc] = codePointToUTF8(0x2add);
    charMap[0x2c00] = codePointToUTF8(0x2c30);
    charMap[0x2c01] = codePointToUTF8(0x2c31);
    charMap[0x2c02] = codePointToUTF8(0x2c32);
    charMap[0x2c03] = codePointToUTF8(0x2c33);
    charMap[0x2c04] = codePointToUTF8(0x2c34);
    charMap[0x2c05] = codePointToUTF8(0x2c35);
    charMap[0x2c06] = codePointToUTF8(0x2c36);
    charMap[0x2c07] = codePointToUTF8(0x2c37);
    charMap[0x2c08] = codePointToUTF8(0x2c38);
    charMap[0x2c09] = codePointToUTF8(0x2c39);
    charMap[0x2c0a] = codePointToUTF8(0x2c3a);
    charMap[0x2c0b] = codePointToUTF8(0x2c3b);
    charMap[0x2c0c] = codePointToUTF8(0x2c3c);
    charMap[0x2c0d] = codePointToUTF8(0x2c3d);
    charMap[0x2c0e] = codePointToUTF8(0x2c3e);
    charMap[0x2c0f] = codePointToUTF8(0x2c3f);
    charMap[0x2c10] = codePointToUTF8(0x2c40);
    charMap[0x2c11] = codePointToUTF8(0x2c41);
    charMap[0x2c12] = codePointToUTF8(0x2c42);
    charMap[0x2c13] = codePointToUTF8(0x2c43);
    charMap[0x2c14] = codePointToUTF8(0x2c44);
    charMap[0x2c15] = codePointToUTF8(0x2c45);
    charMap[0x2c16] = codePointToUTF8(0x2c46);
    charMap[0x2c17] = codePointToUTF8(0x2c47);
    charMap[0x2c18] = codePointToUTF8(0x2c48);
    charMap[0x2c19] = codePointToUTF8(0x2c49);
    charMap[0x2c1a] = codePointToUTF8(0x2c4a);
    charMap[0x2c1b] = codePointToUTF8(0x2c4b);
    charMap[0x2c1c] = codePointToUTF8(0x2c4c);
    charMap[0x2c1d] = codePointToUTF8(0x2c4d);
    charMap[0x2c1e] = codePointToUTF8(0x2c4e);
    charMap[0x2c1f] = codePointToUTF8(0x2c4f);
    charMap[0x2c20] = codePointToUTF8(0x2c50);
    charMap[0x2c21] = codePointToUTF8(0x2c51);
    charMap[0x2c22] = codePointToUTF8(0x2c52);
    charMap[0x2c23] = codePointToUTF8(0x2c53);
    charMap[0x2c24] = codePointToUTF8(0x2c54);
    charMap[0x2c25] = codePointToUTF8(0x2c55);
    charMap[0x2c26] = codePointToUTF8(0x2c56);
    charMap[0x2c27] = codePointToUTF8(0x2c57);
    charMap[0x2c28] = codePointToUTF8(0x2c58);
    charMap[0x2c29] = codePointToUTF8(0x2c59);
    charMap[0x2c2a] = codePointToUTF8(0x2c5a);
    charMap[0x2c2b] = codePointToUTF8(0x2c5b);
    charMap[0x2c2c] = codePointToUTF8(0x2c5c);
    charMap[0x2c2d] = codePointToUTF8(0x2c5d);
    charMap[0x2c2e] = codePointToUTF8(0x2c5e);
    charMap[0x2c60] = codePointToUTF8(0x2c61);
    charMap[0x2c62] = codePointToUTF8(0x026b);
    charMap[0x2c63] = codePointToUTF8(0x1d7d);
    charMap[0x2c64] = codePointToUTF8(0x027d);
    charMap[0x2c67] = codePointToUTF8(0x2c68);
    charMap[0x2c69] = codePointToUTF8(0x2c6a);
    charMap[0x2c6b] = codePointToUTF8(0x2c6c);
    charMap[0x2c6d] = codePointToUTF8(0x0251);
    charMap[0x2c6e] = codePointToUTF8(0x0271);
    charMap[0x2c6f] = codePointToUTF8(0x0250);
    charMap[0x2c70] = codePointToUTF8(0x0252);
    charMap[0x2c72] = codePointToUTF8(0x2c73);
    charMap[0x2c75] = codePointToUTF8(0x2c76);
    charMap[0x2c7e] = codePointToUTF8(0x023f);
    charMap[0x2c7f] = codePointToUTF8(0x0240);
    charMap[0x2c80] = codePointToUTF8(0x2c81);
    charMap[0x2c82] = codePointToUTF8(0x2c83);
    charMap[0x2c84] = codePointToUTF8(0x2c85);
    charMap[0x2c86] = codePointToUTF8(0x2c87);
    charMap[0x2c88] = codePointToUTF8(0x2c89);
    charMap[0x2c8a] = codePointToUTF8(0x2c8b);
    charMap[0x2c8c] = codePointToUTF8(0x2c8d);
    charMap[0x2c8e] = codePointToUTF8(0x2c8f);
    charMap[0x2c90] = codePointToUTF8(0x2c91);
    charMap[0x2c92] = codePointToUTF8(0x2c93);
    charMap[0x2c94] = codePointToUTF8(0x2c95);
    charMap[0x2c96] = codePointToUTF8(0x2c97);
    charMap[0x2c98] = codePointToUTF8(0x2c99);
    charMap[0x2c9a] = codePointToUTF8(0x2c9b);
    charMap[0x2c9c] = codePointToUTF8(0x2c9d);
    charMap[0x2c9e] = codePointToUTF8(0x2c9f);
    charMap[0x2ca0] = codePointToUTF8(0x2ca1);
    charMap[0x2ca2] = codePointToUTF8(0x2ca3);
    charMap[0x2ca4] = codePointToUTF8(0x2ca5);
    charMap[0x2ca6] = codePointToUTF8(0x2ca7);
    charMap[0x2ca8] = codePointToUTF8(0x2ca9);
    charMap[0x2caa] = codePointToUTF8(0x2cab);
    charMap[0x2cac] = codePointToUTF8(0x2cad);
    charMap[0x2cae] = codePointToUTF8(0x2caf);
    charMap[0x2cb0] = codePointToUTF8(0x2cb1);
    charMap[0x2cb2] = codePointToUTF8(0x2cb3);
    charMap[0x2cb4] = codePointToUTF8(0x2cb5);
    charMap[0x2cb6] = codePointToUTF8(0x2cb7);
    charMap[0x2cb8] = codePointToUTF8(0x2cb9);
    charMap[0x2cba] = codePointToUTF8(0x2cbb);
    charMap[0x2cbc] = codePointToUTF8(0x2cbd);
    charMap[0x2cbe] = codePointToUTF8(0x2cbf);
    charMap[0x2cc0] = codePointToUTF8(0x2cc1);
    charMap[0x2cc2] = codePointToUTF8(0x2cc3);
    charMap[0x2cc4] = codePointToUTF8(0x2cc5);
    charMap[0x2cc6] = codePointToUTF8(0x2cc7);
    charMap[0x2cc8] = codePointToUTF8(0x2cc9);
    charMap[0x2cca] = codePointToUTF8(0x2ccb);
    charMap[0x2ccc] = codePointToUTF8(0x2ccd);
    charMap[0x2cce] = codePointToUTF8(0x2ccf);
    charMap[0x2cd0] = codePointToUTF8(0x2cd1);
    charMap[0x2cd2] = codePointToUTF8(0x2cd3);
    charMap[0x2cd4] = codePointToUTF8(0x2cd5);
    charMap[0x2cd6] = codePointToUTF8(0x2cd7);
    charMap[0x2cd8] = codePointToUTF8(0x2cd9);
    charMap[0x2cda] = codePointToUTF8(0x2cdb);
    charMap[0x2cdc] = codePointToUTF8(0x2cdd);
    charMap[0x2cde] = codePointToUTF8(0x2cdf);
    charMap[0x2ce0] = codePointToUTF8(0x2ce1);
    charMap[0x2ce2] = codePointToUTF8(0x2ce3);
    charMap[0x2ceb] = codePointToUTF8(0x2cec);
    charMap[0x2ced] = codePointToUTF8(0x2cee);
    charMap[0x2cf2] = codePointToUTF8(0x2cf3);
    charMap[0x304c] = codePointToUTF8(0x304b);
    charMap[0x304e] = codePointToUTF8(0x304d);
    charMap[0x3050] = codePointToUTF8(0x304f);
    charMap[0x3052] = codePointToUTF8(0x3051);
    charMap[0x3054] = codePointToUTF8(0x3053);
    charMap[0x3056] = codePointToUTF8(0x3055);
    charMap[0x3058] = codePointToUTF8(0x3057);
    charMap[0x305a] = codePointToUTF8(0x3059);
    charMap[0x305c] = codePointToUTF8(0x305b);
    charMap[0x305e] = codePointToUTF8(0x305d);
    charMap[0x3060] = codePointToUTF8(0x305f);
    charMap[0x3062] = codePointToUTF8(0x3061);
    charMap[0x3065] = codePointToUTF8(0x3064);
    charMap[0x3067] = codePointToUTF8(0x3066);
    charMap[0x3069] = codePointToUTF8(0x3068);
    charMap[0x3070] = codePointToUTF8(0x306f);
    charMap[0x3071] = codePointToUTF8(0x306f);
    charMap[0x3073] = codePointToUTF8(0x3072);
    charMap[0x3074] = codePointToUTF8(0x3072);
    charMap[0x3076] = codePointToUTF8(0x3075);
    charMap[0x3077] = codePointToUTF8(0x3075);
    charMap[0x3079] = codePointToUTF8(0x3078);
    charMap[0x307a] = codePointToUTF8(0x3078);
    charMap[0x307c] = codePointToUTF8(0x307b);
    charMap[0x307d] = codePointToUTF8(0x307b);
    charMap[0x3094] = codePointToUTF8(0x3046);
    charMap[0x309e] = codePointToUTF8(0x309d);
    charMap[0x30ac] = codePointToUTF8(0x30ab);
    charMap[0x30ae] = codePointToUTF8(0x30ad);
    charMap[0x30b0] = codePointToUTF8(0x30af);
    charMap[0x30b2] = codePointToUTF8(0x30b1);
    charMap[0x30b4] = codePointToUTF8(0x30b3);
    charMap[0x30b6] = codePointToUTF8(0x30b5);
    charMap[0x30b8] = codePointToUTF8(0x30b7);
    charMap[0x30ba] = codePointToUTF8(0x30b9);
    charMap[0x30bc] = codePointToUTF8(0x30bb);
    charMap[0x30be] = codePointToUTF8(0x30bd);
    charMap[0x30c0] = codePointToUTF8(0x30bf);
    charMap[0x30c2] = codePointToUTF8(0x30c1);
    charMap[0x30c5] = codePointToUTF8(0x30c4);
    charMap[0x30c7] = codePointToUTF8(0x30c6);
    charMap[0x30c9] = codePointToUTF8(0x30c8);
    charMap[0x30d0] = codePointToUTF8(0x30cf);
    charMap[0x30d1] = codePointToUTF8(0x30cf);
    charMap[0x30d3] = codePointToUTF8(0x30d2);
    charMap[0x30d4] = codePointToUTF8(0x30d2);
    charMap[0x30d6] = codePointToUTF8(0x30d5);
    charMap[0x30d7] = codePointToUTF8(0x30d5);
    charMap[0x30d9] = codePointToUTF8(0x30d8);
    charMap[0x30da] = codePointToUTF8(0x30d8);
    charMap[0x30dc] = codePointToUTF8(0x30db);
    charMap[0x30dd] = codePointToUTF8(0x30db);
    charMap[0x30f4] = codePointToUTF8(0x30a6);
    charMap[0x30f7] = codePointToUTF8(0x30ef);
    charMap[0x30f8] = codePointToUTF8(0x30f0);
    charMap[0x30f9] = codePointToUTF8(0x30f1);
    charMap[0x30fa] = codePointToUTF8(0x30f2);
    charMap[0x30fe] = codePointToUTF8(0x30fd);
    charMap[0xa640] = codePointToUTF8(0xa641);
    charMap[0xa642] = codePointToUTF8(0xa643);
    charMap[0xa644] = codePointToUTF8(0xa645);
    charMap[0xa646] = codePointToUTF8(0xa647);
    charMap[0xa648] = codePointToUTF8(0xa649);
    charMap[0xa64a] = codePointToUTF8(0xa64b);
    charMap[0xa64c] = codePointToUTF8(0xa64d);
    charMap[0xa64e] = codePointToUTF8(0xa64f);
    charMap[0xa650] = codePointToUTF8(0xa651);
    charMap[0xa652] = codePointToUTF8(0xa653);
    charMap[0xa654] = codePointToUTF8(0xa655);
    charMap[0xa656] = codePointToUTF8(0xa657);
    charMap[0xa658] = codePointToUTF8(0xa659);
    charMap[0xa65a] = codePointToUTF8(0xa65b);
    charMap[0xa65c] = codePointToUTF8(0xa65d);
    charMap[0xa65e] = codePointToUTF8(0xa65f);
    charMap[0xa660] = codePointToUTF8(0xa661);
    charMap[0xa662] = codePointToUTF8(0xa663);
    charMap[0xa664] = codePointToUTF8(0xa665);
    charMap[0xa666] = codePointToUTF8(0xa667);
    charMap[0xa668] = codePointToUTF8(0xa669);
    charMap[0xa66a] = codePointToUTF8(0xa66b);
    charMap[0xa66c] = codePointToUTF8(0xa66d);
    charMap[0xa680] = codePointToUTF8(0xa681);
    charMap[0xa682] = codePointToUTF8(0xa683);
    charMap[0xa684] = codePointToUTF8(0xa685);
    charMap[0xa686] = codePointToUTF8(0xa687);
    charMap[0xa688] = codePointToUTF8(0xa689);
    charMap[0xa68a] = codePointToUTF8(0xa68b);
    charMap[0xa68c] = codePointToUTF8(0xa68d);
    charMap[0xa68e] = codePointToUTF8(0xa68f);
    charMap[0xa690] = codePointToUTF8(0xa691);
    charMap[0xa692] = codePointToUTF8(0xa693);
    charMap[0xa694] = codePointToUTF8(0xa695);
    charMap[0xa696] = codePointToUTF8(0xa697);
    charMap[0xa698] = codePointToUTF8(0xa699);
    charMap[0xa69a] = codePointToUTF8(0xa69b);
    charMap[0xa722] = codePointToUTF8(0xa723);
    charMap[0xa724] = codePointToUTF8(0xa725);
    charMap[0xa726] = codePointToUTF8(0xa727);
    charMap[0xa728] = codePointToUTF8(0xa729);
    charMap[0xa72a] = codePointToUTF8(0xa72b);
    charMap[0xa72c] = codePointToUTF8(0xa72d);
    charMap[0xa72e] = codePointToUTF8(0xa72f);
    charMap[0xa732] = codePointToUTF8(0xa733);
    charMap[0xa734] = codePointToUTF8(0xa735);
    charMap[0xa736] = codePointToUTF8(0xa737);
    charMap[0xa738] = codePointToUTF8(0xa739);
    charMap[0xa73a] = codePointToUTF8(0xa73b);
    charMap[0xa73c] = codePointToUTF8(0xa73d);
    charMap[0xa73e] = codePointToUTF8(0xa73f);
    charMap[0xa740] = codePointToUTF8(0xa741);
    charMap[0xa742] = codePointToUTF8(0xa743);
    charMap[0xa744] = codePointToUTF8(0xa745);
    charMap[0xa746] = codePointToUTF8(0xa747);
    charMap[0xa748] = codePointToUTF8(0xa749);
    charMap[0xa74a] = codePointToUTF8(0xa74b);
    charMap[0xa74c] = codePointToUTF8(0xa74d);
    charMap[0xa74e] = codePointToUTF8(0xa74f);
    charMap[0xa750] = codePointToUTF8(0xa751);
    charMap[0xa752] = codePointToUTF8(0xa753);
    charMap[0xa754] = codePointToUTF8(0xa755);
    charMap[0xa756] = codePointToUTF8(0xa757);
    charMap[0xa758] = codePointToUTF8(0xa759);
    charMap[0xa75a] = codePointToUTF8(0xa75b);
    charMap[0xa75c] = codePointToUTF8(0xa75d);
    charMap[0xa75e] = codePointToUTF8(0xa75f);
    charMap[0xa760] = codePointToUTF8(0xa761);
    charMap[0xa762] = codePointToUTF8(0xa763);
    charMap[0xa764] = codePointToUTF8(0xa765);
    charMap[0xa766] = codePointToUTF8(0xa767);
    charMap[0xa768] = codePointToUTF8(0xa769);
    charMap[0xa76a] = codePointToUTF8(0xa76b);
    charMap[0xa76c] = codePointToUTF8(0xa76d);
    charMap[0xa76e] = codePointToUTF8(0xa76f);
    charMap[0xa779] = codePointToUTF8(0xa77a);
    charMap[0xa77b] = codePointToUTF8(0xa77c);
    charMap[0xa77d] = codePointToUTF8(0x1d79);
    charMap[0xa77e] = codePointToUTF8(0xa77f);
    charMap[0xa780] = codePointToUTF8(0xa781);
    charMap[0xa782] = codePointToUTF8(0xa783);
    charMap[0xa784] = codePointToUTF8(0xa785);
    charMap[0xa786] = codePointToUTF8(0xa787);
    charMap[0xa78b] = codePointToUTF8(0xa78c);
    charMap[0xa78d] = codePointToUTF8(0x0265);
    charMap[0xa790] = codePointToUTF8(0xa791);
    charMap[0xa792] = codePointToUTF8(0xa793);
    charMap[0xa796] = codePointToUTF8(0xa797);
    charMap[0xa798] = codePointToUTF8(0xa799);
    charMap[0xa79a] = codePointToUTF8(0xa79b);
    charMap[0xa79c] = codePointToUTF8(0xa79d);
    charMap[0xa79e] = codePointToUTF8(0xa79f);
    charMap[0xa7a0] = codePointToUTF8(0xa7a1);
    charMap[0xa7a2] = codePointToUTF8(0xa7a3);
    charMap[0xa7a4] = codePointToUTF8(0xa7a5);
    charMap[0xa7a6] = codePointToUTF8(0xa7a7);
    charMap[0xa7a8] = codePointToUTF8(0xa7a9);
    charMap[0xa7aa] = codePointToUTF8(0x0266);
    charMap[0xa7ab] = codePointToUTF8(0x025c);
    charMap[0xa7ac] = codePointToUTF8(0x0261);
    charMap[0xa7ad] = codePointToUTF8(0x026c);
    charMap[0xa7ae] = codePointToUTF8(0x026a);
    charMap[0xa7b0] = codePointToUTF8(0x029e);
    charMap[0xa7b1] = codePointToUTF8(0x0287);
    charMap[0xa7b2] = codePointToUTF8(0x029d);
    charMap[0xa7b3] = codePointToUTF8(0xab53);
    charMap[0xa7b4] = codePointToUTF8(0xa7b5);
    charMap[0xa7b6] = codePointToUTF8(0xa7b7);
    charMap[0xfb1d] = codePointToUTF8(0x05d9);
    charMap[0xfb1f] = codePointToUTF8(0x05f2);
    charMap[0xfb2a] = codePointToUTF8(0x05e9);
    charMap[0xfb2b] = codePointToUTF8(0x05e9);
    charMap[0xfb2c] = codePointToUTF8(0x05e9);
    charMap[0xfb2d] = codePointToUTF8(0x05e9);
    charMap[0xfb2e] = codePointToUTF8(0x05d0);
    charMap[0xfb2f] = codePointToUTF8(0x05d0);
    charMap[0xfb30] = codePointToUTF8(0x05d0);
    charMap[0xfb31] = codePointToUTF8(0x05d1);
    charMap[0xfb32] = codePointToUTF8(0x05d2);
    charMap[0xfb33] = codePointToUTF8(0x05d3);
    charMap[0xfb34] = codePointToUTF8(0x05d4);
    charMap[0xfb35] = codePointToUTF8(0x05d5);
    charMap[0xfb36] = codePointToUTF8(0x05d6);
    charMap[0xfb38] = codePointToUTF8(0x05d8);
    charMap[0xfb39] = codePointToUTF8(0x05d9);
    charMap[0xfb3a] = codePointToUTF8(0x05da);
    charMap[0xfb3b] = codePointToUTF8(0x05db);
    charMap[0xfb3c] = codePointToUTF8(0x05dc);
    charMap[0xfb3e] = codePointToUTF8(0x05de);
    charMap[0xfb40] = codePointToUTF8(0x05e0);
    charMap[0xfb41] = codePointToUTF8(0x05e1);
    charMap[0xfb43] = codePointToUTF8(0x05e3);
    charMap[0xfb44] = codePointToUTF8(0x05e4);
    charMap[0xfb46] = codePointToUTF8(0x05e6);
    charMap[0xfb47] = codePointToUTF8(0x05e7);
    charMap[0xfb48] = codePointToUTF8(0x05e8);
    charMap[0xfb49] = codePointToUTF8(0x05e9);
    charMap[0xfb4a] = codePointToUTF8(0x05ea);
    charMap[0xfb4b] = codePointToUTF8(0x05d5);
    charMap[0xfb4c] = codePointToUTF8(0x05d1);
    charMap[0xfb4d] = codePointToUTF8(0x05db);
    charMap[0xfb4e] = codePointToUTF8(0x05e4);
    charMap[0xff21] = codePointToUTF8(0xff41);
    charMap[0xff22] = codePointToUTF8(0xff42);
    charMap[0xff23] = codePointToUTF8(0xff43);
    charMap[0xff24] = codePointToUTF8(0xff44);
    charMap[0xff25] = codePointToUTF8(0xff45);
    charMap[0xff26] = codePointToUTF8(0xff46);
    charMap[0xff27] = codePointToUTF8(0xff47);
    charMap[0xff28] = codePointToUTF8(0xff48);
    charMap[0xff29] = codePointToUTF8(0xff49);
    charMap[0xff2a] = codePointToUTF8(0xff4a);
    charMap[0xff2b] = codePointToUTF8(0xff4b);
    charMap[0xff2c] = codePointToUTF8(0xff4c);
    charMap[0xff2d] = codePointToUTF8(0xff4d);
    charMap[0xff2e] = codePointToUTF8(0xff4e);
    charMap[0xff2f] = codePointToUTF8(0xff4f);
    charMap[0xff30] = codePointToUTF8(0xff50);
    charMap[0xff31] = codePointToUTF8(0xff51);
    charMap[0xff32] = codePointToUTF8(0xff52);
    charMap[0xff33] = codePointToUTF8(0xff53);
    charMap[0xff34] = codePointToUTF8(0xff54);
    charMap[0xff35] = codePointToUTF8(0xff55);
    charMap[0xff36] = codePointToUTF8(0xff56);
    charMap[0xff37] = codePointToUTF8(0xff57);
    charMap[0xff38] = codePointToUTF8(0xff58);
    charMap[0xff39] = codePointToUTF8(0xff59);
    charMap[0xff3a] = codePointToUTF8(0xff5a);
    charMap[0x10400] = codePointToUTF8(0x10428);
    charMap[0x10401] = codePointToUTF8(0x10429);
    charMap[0x10402] = codePointToUTF8(0x1042a);
    charMap[0x10403] = codePointToUTF8(0x1042b);
    charMap[0x10404] = codePointToUTF8(0x1042c);
    charMap[0x10405] = codePointToUTF8(0x1042d);
    charMap[0x10406] = codePointToUTF8(0x1042e);
    charMap[0x10407] = codePointToUTF8(0x1042f);
    charMap[0x10408] = codePointToUTF8(0x10430);
    charMap[0x10409] = codePointToUTF8(0x10431);
    charMap[0x1040a] = codePointToUTF8(0x10432);
    charMap[0x1040b] = codePointToUTF8(0x10433);
    charMap[0x1040c] = codePointToUTF8(0x10434);
    charMap[0x1040d] = codePointToUTF8(0x10435);
    charMap[0x1040e] = codePointToUTF8(0x10436);
    charMap[0x1040f] = codePointToUTF8(0x10437);
    charMap[0x10410] = codePointToUTF8(0x10438);
    charMap[0x10411] = codePointToUTF8(0x10439);
    charMap[0x10412] = codePointToUTF8(0x1043a);
    charMap[0x10413] = codePointToUTF8(0x1043b);
    charMap[0x10414] = codePointToUTF8(0x1043c);
    charMap[0x10415] = codePointToUTF8(0x1043d);
    charMap[0x10416] = codePointToUTF8(0x1043e);
    charMap[0x10417] = codePointToUTF8(0x1043f);
    charMap[0x10418] = codePointToUTF8(0x10440);
    charMap[0x10419] = codePointToUTF8(0x10441);
    charMap[0x1041a] = codePointToUTF8(0x10442);
    charMap[0x1041b] = codePointToUTF8(0x10443);
    charMap[0x1041c] = codePointToUTF8(0x10444);
    charMap[0x1041d] = codePointToUTF8(0x10445);
    charMap[0x1041e] = codePointToUTF8(0x10446);
    charMap[0x1041f] = codePointToUTF8(0x10447);
    charMap[0x10420] = codePointToUTF8(0x10448);
    charMap[0x10421] = codePointToUTF8(0x10449);
    charMap[0x10422] = codePointToUTF8(0x1044a);
    charMap[0x10423] = codePointToUTF8(0x1044b);
    charMap[0x10424] = codePointToUTF8(0x1044c);
    charMap[0x10425] = codePointToUTF8(0x1044d);
    charMap[0x10426] = codePointToUTF8(0x1044e);
    charMap[0x10427] = codePointToUTF8(0x1044f);
    charMap[0x104b0] = codePointToUTF8(0x104d8);
    charMap[0x104b1] = codePointToUTF8(0x104d9);
    charMap[0x104b2] = codePointToUTF8(0x104da);
    charMap[0x104b3] = codePointToUTF8(0x104db);
    charMap[0x104b4] = codePointToUTF8(0x104dc);
    charMap[0x104b5] = codePointToUTF8(0x104dd);
    charMap[0x104b6] = codePointToUTF8(0x104de);
    charMap[0x104b7] = codePointToUTF8(0x104df);
    charMap[0x104b8] = codePointToUTF8(0x104e0);
    charMap[0x104b9] = codePointToUTF8(0x104e1);
    charMap[0x104ba] = codePointToUTF8(0x104e2);
    charMap[0x104bb] = codePointToUTF8(0x104e3);
    charMap[0x104bc] = codePointToUTF8(0x104e4);
    charMap[0x104bd] = codePointToUTF8(0x104e5);
    charMap[0x104be] = codePointToUTF8(0x104e6);
    charMap[0x104bf] = codePointToUTF8(0x104e7);
    charMap[0x104c0] = codePointToUTF8(0x104e8);
    charMap[0x104c1] = codePointToUTF8(0x104e9);
    charMap[0x104c2] = codePointToUTF8(0x104ea);
    charMap[0x104c3] = codePointToUTF8(0x104eb);
    charMap[0x104c4] = codePointToUTF8(0x104ec);
    charMap[0x104c5] = codePointToUTF8(0x104ed);
    charMap[0x104c6] = codePointToUTF8(0x104ee);
    charMap[0x104c7] = codePointToUTF8(0x104ef);
    charMap[0x104c8] = codePointToUTF8(0x104f0);
    charMap[0x104c9] = codePointToUTF8(0x104f1);
    charMap[0x104ca] = codePointToUTF8(0x104f2);
    charMap[0x104cb] = codePointToUTF8(0x104f3);
    charMap[0x104cc] = codePointToUTF8(0x104f4);
    charMap[0x104cd] = codePointToUTF8(0x104f5);
    charMap[0x104ce] = codePointToUTF8(0x104f6);
    charMap[0x104cf] = codePointToUTF8(0x104f7);
    charMap[0x104d0] = codePointToUTF8(0x104f8);
    charMap[0x104d1] = codePointToUTF8(0x104f9);
    charMap[0x104d2] = codePointToUTF8(0x104fa);
    charMap[0x104d3] = codePointToUTF8(0x104fb);
    charMap[0x10c80] = codePointToUTF8(0x10cc0);
    charMap[0x10c81] = codePointToUTF8(0x10cc1);
    charMap[0x10c82] = codePointToUTF8(0x10cc2);
    charMap[0x10c83] = codePointToUTF8(0x10cc3);
    charMap[0x10c84] = codePointToUTF8(0x10cc4);
    charMap[0x10c85] = codePointToUTF8(0x10cc5);
    charMap[0x10c86] = codePointToUTF8(0x10cc6);
    charMap[0x10c87] = codePointToUTF8(0x10cc7);
    charMap[0x10c88] = codePointToUTF8(0x10cc8);
    charMap[0x10c89] = codePointToUTF8(0x10cc9);
    charMap[0x10c8a] = codePointToUTF8(0x10cca);
    charMap[0x10c8b] = codePointToUTF8(0x10ccb);
    charMap[0x10c8c] = codePointToUTF8(0x10ccc);
    charMap[0x10c8d] = codePointToUTF8(0x10ccd);
    charMap[0x10c8e] = codePointToUTF8(0x10cce);
    charMap[0x10c8f] = codePointToUTF8(0x10ccf);
    charMap[0x10c90] = codePointToUTF8(0x10cd0);
    charMap[0x10c91] = codePointToUTF8(0x10cd1);
    charMap[0x10c92] = codePointToUTF8(0x10cd2);
    charMap[0x10c93] = codePointToUTF8(0x10cd3);
    charMap[0x10c94] = codePointToUTF8(0x10cd4);
    charMap[0x10c95] = codePointToUTF8(0x10cd5);
    charMap[0x10c96] = codePointToUTF8(0x10cd6);
    charMap[0x10c97] = codePointToUTF8(0x10cd7);
    charMap[0x10c98] = codePointToUTF8(0x10cd8);
    charMap[0x10c99] = codePointToUTF8(0x10cd9);
    charMap[0x10c9a] = codePointToUTF8(0x10cda);
    charMap[0x10c9b] = codePointToUTF8(0x10cdb);
    charMap[0x10c9c] = codePointToUTF8(0x10cdc);
    charMap[0x10c9d] = codePointToUTF8(0x10cdd);
    charMap[0x10c9e] = codePointToUTF8(0x10cde);
    charMap[0x10c9f] = codePointToUTF8(0x10cdf);
    charMap[0x10ca0] = codePointToUTF8(0x10ce0);
    charMap[0x10ca1] = codePointToUTF8(0x10ce1);
    charMap[0x10ca2] = codePointToUTF8(0x10ce2);
    charMap[0x10ca3] = codePointToUTF8(0x10ce3);
    charMap[0x10ca4] = codePointToUTF8(0x10ce4);
    charMap[0x10ca5] = codePointToUTF8(0x10ce5);
    charMap[0x10ca6] = codePointToUTF8(0x10ce6);
    charMap[0x10ca7] = codePointToUTF8(0x10ce7);
    charMap[0x10ca8] = codePointToUTF8(0x10ce8);
    charMap[0x10ca9] = codePointToUTF8(0x10ce9);
    charMap[0x10caa] = codePointToUTF8(0x10cea);
    charMap[0x10cab] = codePointToUTF8(0x10ceb);
    charMap[0x10cac] = codePointToUTF8(0x10cec);
    charMap[0x10cad] = codePointToUTF8(0x10ced);
    charMap[0x10cae] = codePointToUTF8(0x10cee);
    charMap[0x10caf] = codePointToUTF8(0x10cef);
    charMap[0x10cb0] = codePointToUTF8(0x10cf0);
    charMap[0x10cb1] = codePointToUTF8(0x10cf1);
    charMap[0x10cb2] = codePointToUTF8(0x10cf2);
    charMap[0x1109a] = codePointToUTF8(0x11099);
    charMap[0x1109c] = codePointToUTF8(0x1109b);
    charMap[0x110ab] = codePointToUTF8(0x110a5);
    charMap[0x114bb] = codePointToUTF8(0x114b9);
    charMap[0x118a0] = codePointToUTF8(0x118c0);
    charMap[0x118a1] = codePointToUTF8(0x118c1);
    charMap[0x118a2] = codePointToUTF8(0x118c2);
    charMap[0x118a3] = codePointToUTF8(0x118c3);
    charMap[0x118a4] = codePointToUTF8(0x118c4);
    charMap[0x118a5] = codePointToUTF8(0x118c5);
    charMap[0x118a6] = codePointToUTF8(0x118c6);
    charMap[0x118a7] = codePointToUTF8(0x118c7);
    charMap[0x118a8] = codePointToUTF8(0x118c8);
    charMap[0x118a9] = codePointToUTF8(0x118c9);
    charMap[0x118aa] = codePointToUTF8(0x118ca);
    charMap[0x118ab] = codePointToUTF8(0x118cb);
    charMap[0x118ac] = codePointToUTF8(0x118cc);
    charMap[0x118ad] = codePointToUTF8(0x118cd);
    charMap[0x118ae] = codePointToUTF8(0x118ce);
    charMap[0x118af] = codePointToUTF8(0x118cf);
    charMap[0x118b0] = codePointToUTF8(0x118d0);
    charMap[0x118b1] = codePointToUTF8(0x118d1);
    charMap[0x118b2] = codePointToUTF8(0x118d2);
    charMap[0x118b3] = codePointToUTF8(0x118d3);
    charMap[0x118b4] = codePointToUTF8(0x118d4);
    charMap[0x118b5] = codePointToUTF8(0x118d5);
    charMap[0x118b6] = codePointToUTF8(0x118d6);
    charMap[0x118b7] = codePointToUTF8(0x118d7);
    charMap[0x118b8] = codePointToUTF8(0x118d8);
    charMap[0x118b9] = codePointToUTF8(0x118d9);
    charMap[0x118ba] = codePointToUTF8(0x118da);
    charMap[0x118bb] = codePointToUTF8(0x118db);
    charMap[0x118bc] = codePointToUTF8(0x118dc);
    charMap[0x118bd] = codePointToUTF8(0x118dd);
    charMap[0x118be] = codePointToUTF8(0x118de);
    charMap[0x118bf] = codePointToUTF8(0x118df);
    charMap[0x1e900] = codePointToUTF8(0x1e922);
    charMap[0x1e901] = codePointToUTF8(0x1e923);
    charMap[0x1e902] = codePointToUTF8(0x1e924);
    charMap[0x1e903] = codePointToUTF8(0x1e925);
    charMap[0x1e904] = codePointToUTF8(0x1e926);
    charMap[0x1e905] = codePointToUTF8(0x1e927);
    charMap[0x1e906] = codePointToUTF8(0x1e928);
    charMap[0x1e907] = codePointToUTF8(0x1e929);
    charMap[0x1e908] = codePointToUTF8(0x1e92a);
    charMap[0x1e909] = codePointToUTF8(0x1e92b);
    charMap[0x1e90a] = codePointToUTF8(0x1e92c);
    charMap[0x1e90b] = codePointToUTF8(0x1e92d);
    charMap[0x1e90c] = codePointToUTF8(0x1e92e);
    charMap[0x1e90d] = codePointToUTF8(0x1e92f);
    charMap[0x1e90e] = codePointToUTF8(0x1e930);
    charMap[0x1e90f] = codePointToUTF8(0x1e931);
    charMap[0x1e910] = codePointToUTF8(0x1e932);
    charMap[0x1e911] = codePointToUTF8(0x1e933);
    charMap[0x1e912] = codePointToUTF8(0x1e934);
    charMap[0x1e913] = codePointToUTF8(0x1e935);
    charMap[0x1e914] = codePointToUTF8(0x1e936);
    charMap[0x1e915] = codePointToUTF8(0x1e937);
    charMap[0x1e916] = codePointToUTF8(0x1e938);
    charMap[0x1e917] = codePointToUTF8(0x1e939);
    charMap[0x1e918] = codePointToUTF8(0x1e93a);
    charMap[0x1e919] = codePointToUTF8(0x1e93b);
    charMap[0x1e91a] = codePointToUTF8(0x1e93c);
    charMap[0x1e91b] = codePointToUTF8(0x1e93d);
    charMap[0x1e91c] = codePointToUTF8(0x1e93e);
    charMap[0x1e91d] = codePointToUTF8(0x1e93f);
    charMap[0x1e91e] = codePointToUTF8(0x1e940);
    charMap[0x1e91f] = codePointToUTF8(0x1e941);
    charMap[0x1e920] = codePointToUTF8(0x1e942);
    charMap[0x1e921] = codePointToUTF8(0x1e943);
    return std::move(charMap);
}

#endif